OSC上关于Jfinal的提问整理(二)

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的提问整理(一)



你可能感兴趣的:(问答,jFinal)