JFinal中Modelmap中的get方法Str方法为什么要那样写

java 中JFinal getModel方法和数据库使用出现问题解决办法_神马软件站
&>&&>&&&&java 中JFinal getModel方法和数据库使用出现问题解决办法
java 中JFinal getModel方法和数据库使用出现问题解决办法
来源:互联网 编辑:神马软件站 05-12
JFinal getModel方法(从页面表单中获取Model对象)+数据库存储问题
一、getmodel方法
1.在JConfig配置类中的数据库映射(存储到数据库时需要此配置)
public void configPlugin(Plugins me) {
C3p0Plugin cp =
cp = new C3p0Plugin(
"jdbc:mysql://localhost:3306/huaxuetang?useUnicode=true&characterEncoding=utf-8",
"root", "1234");
System.out.println("成功");
} catch (Exception e) {
System.out.println("连接失败");
me.add(cp);
ActiveRecordPlugin arp = new ActiveRecordPlugin(cp);
arp.setShowSql(true);
me.add(arp);
arp.addMapping("bse_user", "id", User.class);
arp.addMapping("grade_one_choice","id",GOneQuestion.class);
中arp。addMapping()中有三个参数,第一个是数据库表名,第二个主键,第三个是对应的Model类名称
import com.jfinal.plugin.activerecord.M
public class GOneQuestion extends Model&GOneQuestion&{
private static final long serialVersionUID = 1L;
// 声明一个全局操作的变量
public final static GOneQuestion questiondao = new GOneQuestion();
3.前端表单
&input type="text" name="gOneQuestion.A" class="required" maxlength="50" style="width: 250px"/&
前端中的name=“Modelname.atrrname”意思:比如此例中的model为GOneQuestion,表单中的属性为A,所以name就为:gOneQuestion.A
注意:只有首字母变成小写,其他不变
4.getmodel获取
GOneQuestion question =getModel(GOneQuestion.class);
二、数据库存储问题
jfianl说明文档中:
User 中定义的 public static final User dao 对象是全局共享的,只能用于数据库查询, 不能用于数据承载对象。数据承载需要使用 new User().set(…)来实现。
意思是:比如本例中model定义的questiondao只能用来查询,不能用来插入数据。
插入数据时:(使用错会出现主键重复问题)
new GOneQuestion()
.set("book", question.getStr("book"))
删除增加数据时:GOneQuestion.questiondao.方法名
下一篇:最后一页查看: 53939|回复: 0
JFinal 自动生成Model类
自动将的表转换为对应的JFinal Model类。仅支持Java7,因为使用了case "aa"。自己改包名和数据库参数。代码及样例都在AutoGenerateModel.tar.gz里面。数据表名使用小写英文以及下划线组成,尽量说明是那个应用或者系统在使用的.字段名称使用单词组合完成,首字母小写,后面单词的首字母大写,最好是带表名前缀.
package com.power.oj.import com.jfinal.plugin.activerecord.Mpublic class GenerateTest extends Model&GenerateTest&{
private static final long serialVersionUID = 1L;
public static final GenerateTest dao = new GenerateTest();
public static final String VARCHAR = &varchar&;
public static final String CHAR = &char&;
public static final String ENUM = &enum&;
public static final String SET = &set&;
public static final String TEXT = &text&;
public static final String TINY_TEXT = &tinyText&;
public static final String MEDIUM_TEXT = &mediumText&;
public static final String LONG_TEXT = &longText&;
public static final String BIT = &bit&;
public static final String TINY_INT = &tinyInt&;
public static final String INT = &int&;
public static final String BOOLEAN = &boolean&;
public static final String SMALL_INT = &smallInt&;
public static final String MEDIUM_INT = &mediumInt&;
public static final String DATE = &date&;
public static final String YEAR = &year&;
public static final String TIME = &time&;
public static final String TIMESTAMP = &timestamp&;
public static final String DATE_TIME = &dateTime&;
public static final String BIG_INT = &bigInt&;
public static final String DECIMAL = &decimal&;
public static final String FLOAT = &float&;
public static final String DOUBLE = &double&;
public static final String BINARY = &binary&;
public static final String VAR_BINARY = &varBinary&;
public static final String TINY_BLOB = &tinyBlob&;
public static final String BLOB = &blob&;
public static final String MEDIA_BLOB = &mediaBlob&;
public static final String LONG_BLOB = &longBlob&;
public static final String IS_ADMIN = &isAdmin&;
public String getVarchar()
return getStr(VARCHAR);
public GenerateTest setVarchar(String value)
return set(VARCHAR, value);
public String getChar()
return getStr(CHAR);
public GenerateTest setChar(String value)
return set(CHAR, value);
public String getEnum()
return getStr(ENUM);
public GenerateTest setEnum(String value)
return set(ENUM, value);
public String getSet()
return getStr(SET);
public GenerateTest setSet(String value)
return set(SET, value);
public String getText()
return getStr(TEXT);
public GenerateTest setText(String value)
return set(TEXT, value);
public String getTinyText()
return getStr(TINY_TEXT);
public GenerateTest setTinyText(String value)
return set(TINY_TEXT, value);
public String getMediumText()
return getStr(MEDIUM_TEXT);
public GenerateTest setMediumText(String value)
return set(MEDIUM_TEXT, value);
public String getLongText()
return getStr(LONG_TEXT);
public GenerateTest setLongText(String value)
return set(LONG_TEXT, value);
public Boolean getBit()
return getBoolean(BIT);
public GenerateTest setBit(Boolean value)
return set(BIT, value);
public Boolean getTinyInt()
return getBoolean(TINY_INT);
public GenerateTest setTinyInt(Boolean value)
return set(TINY_INT, value);
public Integer getInt()
return getInt(INT);
public GenerateTest setInt(Integer value)
return set(INT, value);
public Integer getBoolean()
return getInt(BOOLEAN);
public GenerateTest setBoolean(Integer value)
return set(BOOLEAN, value);
public Integer getSmallInt()
return getInt(SMALL_INT);
public GenerateTest setSmallInt(Integer value)
return set(SMALL_INT, value);
public Integer getMediumInt()
return getInt(MEDIUM_INT);
public GenerateTest setMediumInt(Integer value)
return set(MEDIUM_INT, value);
public java.sql.Date getDate()
return getDate(DATE);
public GenerateTest setDate(java.sql.Date value)
return set(DATE, value);
public java.sql.Date getYear()
return getDate(YEAR);
public GenerateTest setYear(java.sql.Date value)
return set(YEAR, value);
public java.sql.Time getTime()
return getTime(TIME);
public GenerateTest setTime(java.sql.Time value)
return set(TIME, value);
public java.sql.Timestamp getTimestamp()
return getTimestamp(TIMESTAMP);
public GenerateTest setTimestamp(java.sql.Timestamp value)
return set(TIMESTAMP, value);
public java.sql.Timestamp getDateTime()
return getTimestamp(DATE_TIME);
public GenerateTest setDateTime(java.sql.Timestamp value)
return set(DATE_TIME, value);
public Long getBigInt()
return getLong(BIG_INT);
public GenerateTest setBigInt(Long value)
return set(BIG_INT, value);
public java.math.BigDecimal getDecimal()
return getBigDecimal(DECIMAL);
public GenerateTest setDecimal(java.math.BigDecimal value)
return set(DECIMAL, value);
public Float getFloat()
return getFloat(FLOAT);
public GenerateTest setFloat(Float value)
return set(FLOAT, value);
public Double getDouble()
return getDouble(DOUBLE);
public GenerateTest setDouble(Double value)
return set(DOUBLE, value);
public byte[] getBinary()
return getBytes(BINARY);
public GenerateTest setBinary(byte[] value)
return set(BINARY, value);
public byte[] getVarBinary()
return getBytes(VAR_BINARY);
public GenerateTest setVarBinary(byte[] value)
return set(VAR_BINARY, value);
public byte[] getTinyBlob()
return getBytes(TINY_BLOB);
public GenerateTest setTinyBlob(byte[] value)
return set(TINY_BLOB, value);
public byte[] getBlob()
return getBytes(BLOB);
public GenerateTest setBlob(byte[] value)
return set(BLOB, value);
public byte[] getMediaBlob()
return getBytes(MEDIA_BLOB);
public GenerateTest setMediaBlob(byte[] value)
return set(MEDIA_BLOB, value);
public byte[] getLongBlob()
return getBytes(LONG_BLOB);
public GenerateTest setLongBlob(byte[] value)
return set(LONG_BLOB, value);
public Boolean isAdmin()
return getBoolean(IS_ADMIN);
public GenerateTest setAdmin(Boolean value)
return set(IS_ADMIN, value);
上一篇:下一篇:41605人阅读
所见所得(138)
java(59)
上一节介绍了jfinal框架的简单搭建,这节通过一个小例子了解jfinal的结构和特点
1、建数据库(我用的是oracle数据库,其他的相对也差不多)
-- Create table
create table CLASSES
NUMBER not null,
classesname
VARCHAR2(20),
classesaddress VARCHAR2(50)
-- Create table
create table STUDENT
NUMBER not null,
studentname VARCHAR2(10),
studentage
studentsex
VARCHAR2(2),
alter table STUDENT
add constraint FK_CLASSESID foreign key (CLASSESID)
references CLASSES (CLASSESID);
新建项目,我用的myeclipse,先把jar包导入
Classes.java
package com.demo.
import com.jfinal.plugin.activerecord.M
public class Classes extends Model&Classes& {
public static final Classes dao = new Classes();
Student.java
package com.demo.
import com.jfinal.plugin.activerecord.M
public class Student extends Model&Student& {
public static final Student dao = new Student();
public Classes getClasses() {
return Classes.dao.findById(get(&classesid&));
什么这是实体类?没错!!~ ActiveRecord 是 jfinal 最核心的组成部分之一,通过 ActiveRecord 来操作数据库,将极大地减少代码量,极大地提升开发效率,配置在后面,我这里用的是Model,Model 是 ActiveRecord 中最重要的组件之一,它充当 MVC 模式中的 Model部分。
以上代码中的 User 通过继承 Model,便立即拥有的众多方便的操作数据库的方法。在 User 中声明的 dao 静态对象是为了方便查询操作而定义的,该对象并不是必须的。 基于ActiveRecord 的 Model 无需定义属性, 无需定义 getter、 setter方法,无需 XML 配置,无需 Annotation 配置,极大降低了代码量。Model常见方法见官方API。
JFinal还有 独创 Db + Record 模式,Db 类及其配套的 Record 类, 提供了在 Model 类之外更为丰富的数据库操作功能。使用 Db 与 Record 类时,无需对数据库表进行映射,Record 相当于一个通用的 Model。Db常见方法见官方API。
3、DemoConfig.java
package com.demo.
import com.demo.controller.ClassesC
import com.demo.controller.StudentC
import com.demo.model.C
import com.demo.model.S
import com.jfinal.config.C
import com.jfinal.config.H
import com.jfinal.config.I
import com.jfinal.config.JFinalC
import com.jfinal.config.P
import com.jfinal.config.R
import com.jfinal.plugin.activerecord.ActiveRecordP
import com.jfinal.plugin.activerecord.CaseInsensitiveContainerF
import com.jfinal.plugin.activerecord.dialect.OracleD
import com.jfinal.plugin.c3p0.C3p0P
public class DemoConfig extends JFinalConfig {
public void configConstant(Constants me) {
public void configHandler(Handlers me) {
// TODO Auto-generated method stub
public void configInterceptor(Interceptors me) {
// TODO Auto-generated method stub
public void configPlugin(Plugins me) {
C3p0Plugin cp = new C3p0Plugin(&jdbc:oracle:thin:@localhost:1521:orcl&,
&test&, &test&);
// 配置Oracle驱动
cp.setDriverClass(&oracle.jdbc.driver.OracleDriver&);
me.add(cp);
ActiveRecordPlugin arp = new ActiveRecordPlugin(cp);
me.add(arp);
// 配置Oracle方言
arp.setDialect(new OracleDialect());
// 配置属性名(字段名)大小写不敏感容器工厂
arp.setContainerFactory(new CaseInsensitiveContainerFactory());
arp.addMapping(&student&, &studentid&, Student.class);
arp.addMapping(&classes&, &classesid&, Classes.class);
public void configRoute(Routes me) {
me.add(&/&, StudentController.class);
me.add(&/student&, StudentController.class);
me.add(&/classes&, ClassesController.class);
我这里是oracle数据库的配置,oracle有些特别的地方,如表列名会自动转成大写,配置个免大小写的工厂,方便开发等。这里要注意url,驱动,方言,在给个mysql数据库的配置对比下
public class DemoConfig extends JFinalConfig {
public void configPlugin(Plugins me) {
C3p0Plugin
C3p0Plugin(&jdbc:mysql://localhost/db_name&,
&userName&, &password&);
me.add(cp);
ActiveRecordPlugin arp = new ActiveRecordPlugin(cp);
me.add(arp);
arp.addMapping(&user&, User.class);
arp.addMapping(&article&, &article_id&, Article.class);
4、StudentController.java
package com.demo.
import java.util.L
import com.demo.interceptor.StudentI
import com.demo.model.S
import com.demo.validator.StudentV
import com.jfinal.aop.B
import com.jfinal.core.C
public class StudentController extends Controller {
@Before(StudentInterceptor.class)
public void index() {
List&Student& list = Student.dao.find(&select * from student&);
setAttr(&studentList&, list);
render(&/index.html&);
public void add() {
render(&/add.html&);
public void delete() {
// 获取表单域名为studentID的值
// Student.dao.deleteById(getPara(&studentID&));
// 获取url请求中第一个值
Student.dao.deleteById(getParaToInt());
forwardAction(&/student&);
public void update() {
Student student = getModel(Student.class);
student.update();
forwardAction(&/student&);
public void get() {
Student student = Student.dao.findById(getParaToInt());
setAttr(&student&, student);
render(&/index2.html&);
@Before(StudentValidator.class)
public void save() {
Student student = getModel(Student.class);
student.set(&studentid&, &mysequence.nextval&).save();
forwardAction(&/student&);
获取studentid那里有多种方法,这个要和前台传参写法一致,Controller 提供了 getPara 系列方法,官网api里很详细
jfinal用的是原生态sql语句,简单,方便,setAttr(&studentList&, list);把结果集放到request范围里,
jfinal也有直接获取表单里分装成对象的方法 getModel(Student.class);就是,和struts2一样,表单name对应上就可以了,非常方便
添加那里对于oracle用序列维护studentid&&&&& student.set(&studentid&, &mysequence.nextval&).save(); jfinal有多种返回方式,也可以返回json数据,render 系列方法,官网api里很详细
5、interceptor和validator(可以不加)
StudentInterceptor.java
package com.demo.
import com.jfinal.aop.I
import com.jfinal.core.ActionI
public class StudentInterceptor implements Interceptor {
public void intercept(ActionInvocation ai) {
System.out.println(&Before action invoking&);
ai.invoke();
System.out.println(&After action invoking&);
StudentValidator.java
package com.demo.
import com.jfinal.core.C
import com.jfinal.validate.V
public class StudentValidator extends Validator {
//在校验失败时才会调用
protected void handleError(Controller controller) {
controller.keepPara(&student.studentname&);//将提交的值再传回页面以便保持原先输入的值
controller.render(&/add.html&);
protected void validate(Controller controller) {
//验证表单域name,返回信息key,返回信息value
validateRequiredString(&student.studentname&, &studentnameMsg&,
&请输入学生名称!&);
我这里用的是FreeMarker模板引擎
index.html
&!DOCTYPE HTML PUBLIC &-//W3C//DTD HTML 4.01 Transitional//EN&&
&title&index.html&/title&
&meta http-equiv=&keywords& content=&keyword1,keyword2,keyword3&&
&meta http-equiv=&description& content=&this is my page&&
&meta http-equiv=&content-type& content=&text/ charset=UTF-8&&
&!--&link rel=&stylesheet& type=&text/css& href=&./styles.css&&--&
&a href=&/student/add&&添加&/a&
&table border=&1&&
&#list studentList as student&
${student.studentname}
${student.studentage}
${student.studentsex}
${student.getClasses().classesname}
&a href=&/student/delete/${student.studentid}&&删除&/a&
&a href=&/student/get/${student.studentid}&&修改&/a&
index2.html
&!DOCTYPE HTML PUBLIC &-//W3C//DTD HTML 4.01 Transitional//EN&&
&title&index2.html&/title&
&meta http-equiv=&keywords& content=&keyword1,keyword2,keyword3&&
&meta http-equiv=&description& content=&this is my page&&
&meta http-equiv=&content-type& content=&text/ charset=UTF-8&&
&!--&link rel=&stylesheet& type=&text/css& href=&./styles.css&&--&
&form action=&/student/update& method=&post&&
&input type=&text& name=&student.studentid& value=&${student.studentid}&/&
&input type=&text& name=&student.studentname&
value=&${student.studentname}&/&
&input type=&text& name=&student.studentage& value=&${student.studentage}&/&
&input type=&text& name=&student.studentsex& value=&${student.studentsex}&/&
&input type=&text& name=&student.classesid& value=&${student.classesid}& /&
&input type=&submit& value=&保存& /&
&!DOCTYPE HTML PUBLIC &-//W3C//DTD HTML 4.01 Transitional//EN&&
&title&add.html&/title&
&meta http-equiv=&keywords& content=&keyword1,keyword2,keyword3&&
&meta http-equiv=&description& content=&this is my page&&
&meta http-equiv=&content-type& content=&text/ charset=UTF-8&&
&!--&link rel=&stylesheet& type=&text/css& href=&./styles.css&&--&
&form action=&/student/save& method=&post&&
&input type=&text& name=&student.studentname& /&${studentnameMsg!}${studentnameLMsg!}
&input type=&text& name=&student.studentage& /&
&input type=&text& name=&student.studentsex& /&
&input type=&text& name=&student.classesid& /&
&input type=&submit& value=&保存& /&
&完成! 浏览器输入
总结一下:
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:769625次
积分:7162
积分:7162
排名:第3086名
原创:82篇
转载:230篇
评论:137条
(16)(9)(1)(1)(2)(1)(1)(1)(10)(8)(9)(16)(2)(12)(9)(2)(9)(9)(1)(2)(2)(2)(2)(5)(2)(5)(14)(10)(2)(23)(45)(2)(3)(3)(8)(5)(23)(1)(21)(1)(3)(1)(1)(5)(1)(1)(1)getModel()方法获取表单数据问题
在开发中案例中,如文章:Content分别有id,name,content等字段,文章分类:Attr分别有id, name, description等字段,中间表ContentAttr分别有id, aid与cid等关联字段,在提交表单时传入文章分类关联id,当使用getModel(Content.class, true)只能获取与Content关联数据,获取不到关联文章分类关联id,且只能额外使用getPara("aid")方法去获取,干嘛不持直接getModel(Content.class, true)一起获取,如果不支持等于一个表单提交分两种方法获取提交数据,虽然是可以,但还是建议改进。
主要是因为getModel(Content.class) 时无法知道 Content 与 ContentAttr 这些关联表的关系是什么,因为 jfinal 在做 model 与表映射的时候,在content 表中确实只找到了 id,name, content 等字段,不是不想做,而是程序无法判断某个表与其它表的依存关系
@JFinal 嗯!感谢波总回答,从上以回答分析的确没有ssh来得方便了,service层中的方法接收的是一个model类(model即是一个普通的bean),action层即传入一个类model类即可完成参数接收,不管参数是否与数据库建立映射关系,只要参数名称对应得上,即可接收。
@lyh061619 jfinal 也同样支持普通的bean,只需要使用 getBean(....) 即可,极度方便,具体到你的应用场景,直接getBean(Content.class)、getBean(ContentAttr.class)就可以解决,如果要跟SSH在此功能上比拼的话,jfinal 自然是支持的,唯一的不同的是jfinal 需要调用 getBean或者getModel,而spring可以在 action 方法中传入一个形参,这种设计方案是很早就被 jfinal 所抛弃的,以前多次讨论过,在此不再赘述
@JFinal 您提出的这个方法也是可行的,谢谢波总!^_^...
类似hibernate在映射实体中做成员变量是不是就可以找到表之间的对应关系了
表关联的用法在 jfinal 手册中有示例说明,建议下载首页的 jfinal 手册看一下
恩,看到了
我用了getBean()之后,前台应该怎么弄呢?我获取不到值
getBean() 是后端的事情,getBean 时候的前台是没法干预的
action中抛弃形参在哪讨论的能否发一下地址学习一下了解了基本的配置,现在就开始愉快的玩耍了!我们先看看JFianl中的Controller是怎么回事吧,还有就是它提供了那些方法让我们的开饭更加方便呢?
一、JFinal中的Controler基本的实现
Controller作为MVC模式中的控制器,也是JFianl的核心之一,在JFianl框架中,控制器需要继承Controller这个类,Controller是定义action的方法的地点,是组织Action的一种方式,一个Controller可以包含多个Action。
package com.demo.
import com.jfinal.aop.B
import com.jfinal.core.C
* Controller
* 所有 sql 与业务逻辑写在 Model 或 Service 中,不要写在 Controller 中,养成好习惯,有利于大型项目的开发与维护
@Before(StudentInterceptor.class)
public class StudentController extends Controller {
public void index() {
setAttr(&studentPage&, Student.me.paginate(getParaToInt(0, 1), 10));
render(&student.html&);
public void add() {
@Before(StudentValidator.class)
public void save() {
getModel(Student.class).save();
redirect(&/student&);
public void edit() {
setAttr(&student&, Student.me.findById(getParaToInt()));
@Before(StudentValidator.class)
public void update() {
getModel(Student.class).update();
redirect(&/student&);
public void delete() {
Student.me.deleteById(getParaToInt());
redirect(&/student&);
public void find() {
setAttr(&student&, Student.me.findById(getParaToInt()));
@Before(StudentValidator.class)
public void select() {
getModel(Student.class).findById(getParaToInt());
redirect(&/student&);
关于JFianl的Controller中封装了一系列的方法来实现Controller控制器的功能。
比如在Spring中的Controller是通过注解来实现一系列的Controller控制器功能:
@RequestMapping(value=&/pub/user&,method=RequestMethod.GET)
public String zres(HttpServletRequest request,ModelMap model,String errorMsg) { &span style=&white-space:pre&& &/span&request.getSession().getServletContext().setAttribute(&session&,request.getSession());
return &/pub/user&;
在JFinal总则是通过继承Controller控制器,并通过Controller内置的一些方法来实现Controller控制器功能:
public class StudentController extends Controller {
public void index() {
setAttr(&studentPage&, Student.me.paginate(getParaToInt(0, 1), 10));
render(&student.html&);
public void add() {
@Before(StudentValidator.class)
public void save() {
getModel(Student.class).save();
redirect(&/student&);
。。。 。。。
JFinal中Controller方法介绍(关于详细的功法和区分可以参考JFinal的说明文档,我只是在这里和Spring中的一些方法做个粗略的比较):
getPara系列方法:
Controller提供了 getPara系列方法用来从请求中获取参数。getPara系列方法分为两种类型。 第 一 种 类 型 为 第 一 个 形 参 为String 的 getPara 系 列 方 法 。 该 系 列 方 法 是 对 HttpServletRequest.getParameter(String name) 的 封 装 , 这 类 方 法都 是 转 调 了 HttpServletRequest.getParameter(String name)。第二种类型为第一个形参为
int 或无形参的 getPara 系列方法。该系列方法是去获取 urlPara 中所带的参数值。 getParaMap 与 getParaNames 分别对应 HttpServletRequest 的 getParameterMap 与 getParameterNames。
那么getParameter是怎么回事呢?
HttpServletRequest.getParameter(&modelName&);当两个Web组件之间为转发关系时,转发源会将要共享request范围内的数据先用setAttribute将数据放入到HttpServletRequest对象中,然后转发目标通过 getAttribute方法来取得要共享的数据。
在JFianl中也是提供了关于getPara的一系列方法,具体的操作和用法参见JFianl的说明文档,实践出真理。
getModel 系列方法:
getModel 用来接收页面表单域传递过来的 model 对象,表单域名称以”modelName.attrName” 方式命名,除了支持JFinal 的 Model 对象以外, getModel 同时也支持传统的 Java Bean。
@Before(StudentValidator.class)
public void save() {
getModel(Student.class).save();
redirect(&/student&);
&#include &/common/_layout.html& /&
&h1&管理首页 ---& 学生系统录入
&div class=&form_box&&
&form action=&/student/save& method=&post&&
&#include &_form.html& /&
&/@layout&
&fieldset class=&solid&&
&legend&学生信息录入&/legend&
&input type=&hidden& name=&student.id& value=&${(student.id)!}& /&
&label&姓名&/label&
&input type=&text& name=&student.name& value=&${(student.name)!}& /&${nameMsg!}
&label&性别&/label&
&input type=&text& name=&student.sex& value=&${(student.sex)!}& /&${sexMsg!}
&label&班级&/label&
&input type=&text& name=&student.grade& value=&${(student.grade)!}& /&${gradeMsg!}
。。。 。。。
&/fieldset&
getFile 文件上传:
Controller 提供了 getFile 系列方法支持文件上传。 特别注意: 如果客户端请求为 multipartrequest( form 表单使用了enctype=&multipart/form-data&),那么必须先调用getFile 系列方法才能使 getPara 系列方法正常工作,因为 multipart request 需要通过 getFile 系列方法解析请求体中的数据,包括参数。
setAttr 方法 :
setAttr(String,Object)转调了 HttpServletRequest.setAttribute(String,Object),该方法可以将 各种数据传递给 View 并在View 中显示出来。
session 操作方法:
通过setSessionAttr(key, value)可以向 session 中存放数据,getSessionAttr(key)可以从 session 中读取数据。还可以通过 getSession()得到 session 对象从而使用全面的 session API。
render 系列方法:
render 系列方法将渲染不同类型的视图并返回给客户端。 JFinal 目前支持的视图类型有: FreeMarker、 JSP、 Velocity、 JSON、 File、 Text、 Html 等等。除了 JFinal 支持的视图型以外, 还可以通过继承 Render 抽象类来无限扩展视图类型。通常情况下使用 Controller.render(String)方法来渲染视图, 使用 Controller.render(String)时 的 视 图 类 型 由JFinalConfig.configConstant(Constants
constants) 配 置 中 的 constants. setViewType(ViewType)来决定,该设置方法支持的 ViewType 有: FreeMarker、 JSP、 Velocity, 不进行配置时的缺省配置为 FreeMarker。 此 外 , 还 可 以 通 过constants.setMainRenderFactory(IMainRenderFactory) 来 设 置 Controller.render(String)所使用的视图, IMainRenderFactory专门用来对
Controller.render(String) 方法扩展除了 FreeMarker、 JSP、Velocity 之外的视图。
本文已收录于以下专栏:
相关文章推荐
了解了基本的配置,现在就开始愉快的玩耍了!我们先看看JFianl中的Controller是怎么回事吧,还有就是它提供了那些方法让我们的开饭更加方便呢?
一、JFinal中的Controler基本的实...
了解了基本的配置,现在就开始愉快的玩耍了!我们先看看JFianl中的Controller是怎么回事吧,还有就是它提供了那些方法让我们的开饭更加方便呢?
一、JFinal中的Controler基本的实...
了解了基本的配置,现在就开始愉快的玩耍了!我们先看看JFianl中的Controller是怎么回事吧,还有就是它提供了那些方法让我们的开饭更加方便呢?
一、JFinal中的Controler基本的实...
了解了基本的配置,现在就开始愉快的玩耍了!我们先看看JFianl中的Controller是怎么回事吧,还有就是它提供了那些方法让我们的开饭更加方便呢?
一、JFinal中的Controler基本的实...
了解了基本的配置,现在就开始愉快的玩耍了!我们先看看JFianl中的Controller是怎么回事吧,还有就是它提供了那些方法让我们的开饭更加方便呢?
一、JFinal中的Controler基本的实...
了解了基本的配置,现在就开始愉快的玩耍了!我们先看看JFianl中的Controller是怎么回事吧,还有就是它提供了那些方法让我们的开饭更加方便呢?
一、JFinal中的Controler基本的实...
了解了基本的配置,现在就开始愉快的玩耍了!我们先看看JFianl中的Controller是怎么回事吧,还有就是它提供了那些方法让我们的开饭更加方便呢?
一、JFinal中的Controler基本的实...
了解了基本的配置,现在就开始愉快的玩耍了!我们先看看JFianl中的Controller是怎么回事吧,还有就是它提供了那些方法让我们的开饭更加方便呢?
一、JFinal中的Controler基本的实...
了解了基本的配置,现在就开始愉快的玩耍了!我们先看看JFianl中的Controller是怎么回事吧,还有就是它提供了那些方法让我们的开饭更加方便呢?
一、JFinal中的Controler基本的实...
了解了基本的配置,现在就开始愉快的玩耍了!我们先看看JFianl中的Controller是怎么回事吧,还有就是它提供了那些方法让我们的开饭更加方便呢?
一、JFinal中的Controler基本的实...
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)

我要回帖

更多关于 list中的get方法 的文章

 

随机推荐