1.【问】:Db.tx(new IAtom())事务不起作用?
【jfinal答】:1:如果使用的mysql,确保引擎为 InnoDB
2:这行代码改一下Db.save(c3p0Plugin.getDataSource(), "tb_test", "PK_ID",
record);去掉 c3p0Plugin.getDataSource()这个参数。
2.【问】:JFinal使用el标签取元素属性报 does not have the property 错误。
我在Controller中往session中放了一个User对象,jsp页面el标签取对象属性的时候报错:
User' does not have the property 'nickName'.
是什么问题呢?
P.S1.Config中已经进行模型映射
arp.addMapping("user", User.class);
2.表中也有nickName这个字段
3.jsp页面表达式${sessionScope.curUserObj.nickName}
4.在页面 ${sessionScope.curUserObj}能输出user对象,并且也有nickName属性:
bean.User@4a952b12 {id:1, status:null, nickName:Romotc, email:
[email protected], pswd:4e6327, lastLoginTime:, registerTime:2:56.0}
【jfinal答】: JspRender对HttpServletRequest对象中的数据进行了处理,数据全被放入了Map之中,如果希望不被处理,可以通过在YourJFinalConfig中调用一下:JspRender.setSupportActiveRecord(false)。
由于JFinal为了Resful,session中的数据默认是不处理的,所以session中的数据无法通过${blog.title}获取到。这个问题本质上是JSTL数据读取能力太弱造成的,建议使用FreeMarker取代JSP
3.【问】:当from加上属性enctype="multipart/form-data"获取不到表单的参数,除掉没问题。
【jfinal答】:如果请求类型为"multipart/form-data",必须先调用任意一个 getFile 方法,因为 multipart 请求的解析是在 getFile 方法中完成的。调用完后就可以通过 getPara 方法来获取值了。
4.【问】:使用getPara获取值的时候的乱码问题如何解决?是在内置的jetty环境下。
【jfinal答】:getPara 获取值取到是乱码的问题可能与字符集设置有关,JFinal默认字符集为utf-8,可以通过 me.setEncoding(String)设置成别的字符集,注意页面字符集与jfinal字符集设置一致
5.【问】:在JFinal里,请问UrlPara与Parameter有什么区别?
【jfinal答】: urlPara 是指没有名字只有位置,并且是在url存在的参数。而常规 para 都有个名字,如表单中通过input设置的,以及在url中通过问号挂参设置的。
6.【问】jfinal怎么使用druid的监控呀!(集成jfinal)
【jfinal答】:JFinal 1.1.3 已经集成了,您无需在 web.xml 中添加配置就可以使用,要使用这个功能,只需分两步:
1:在 configPlugin中添加DruidPlugin
public void configPlugin(Plugins me) {
// DruidPlugin
DruidPlugin dp = new DruidPlugin(getProperty("jdbcUrl"), getProperty("user"), getProperty("password"));
dp.addFilter(new StatFilter());
WallFilter wall = new WallFilter();
wall.setDbType("mysql");
dp.addFilter(wall);
me.add(dp);
// ActiveRecordPlugin
ActiveRecordPlugin arp = new ActiveRecordPlugin(dp);
......
me.add(arp);
}
2:在configHander 中添加DruidHandler
public void configHandler(Handlers me) {
DruidStatViewHandler dvh = new DruidStatViewHandler("/druid");
me.add(dvh);
}
http://www.oschina.net/question/727605_71999
7.【问】:如何很好的设计jfinal的controller层的类?
【jfinal答】:JFinal 建议的项目结构:
1:总体划分规则:先分模块,然后在模块中分层。
2:模块划分:中小型项目,每个领域模型划分为一个模块,如 jfinal demo 给出的 blog就是一个模块。大型项目可以在模块下面划分子模块。
3:层次划分:中小型项目可以在模块下面直接以类文件命名来约定层次,如Controller层为BlogController,Model层为Blog,业务层为BlogService。大型项目可以为层分配子包,如在模块下面创建service、controller、model包,然后在包中再创建该层次的相关类文件。
4:为了极速开发,中小型项目,可以不使用Service层,而且业务全部放入Model,称之为充血领域模型。
OSC上关于Jfinal的提问整理(一)