收集jfinal相关的问题

1.关于使用oracle序列产生自增主键的问题。

保存一个users表,用oracle的sequence产生主键。

Users users = this.getModel(Users.class);
int rc = Db.queryBigDecimal("select zf_seq.nextval from dual")
.intValue();

users.put("ID", rc);

users.save();在1.1之前的版本中会报错,在最新1.1版本中修正了oracle主键自增问题(用序列)

主键名大小写的问题,在映射talbe到model 的时候这样做:

1 arp.addMapping("users", "ID", Users.class);

上面这个方法第第二个参数指定了主键的名称,如果不指定,则默认为  "id"
tips:如果是直接sql操作直接引用序列zf_seq.nextval即可。

来源:http://www.oschina.net/question/146340_61195?from=mail-notify

2.集合转json,json与bean互转的问题

renderJson(key, value) 会自动将其转化为 json的。例如经常这么用:

1 List<Blog> blogList = Blog.dao.find(...);
2 renderJson("blogList", blogList);
json 与 bean 互换的方法暂时没有提供,考虑以后提供。不过就算目前没有提供,但已经可以应对 renderJson(..)了。
来源:http://www.oschina.net/question/5675_61196

 3.jfinal实现分页问题

JFinal demo 项目中的WebRoot/common 下有个 _paginate.html, 可以直接用的,不用自己再写了

一般在controller这样用:

1 setAttr("blogPage", Blog.dao.paginate(1, 10, "select *", "from blog");
2 render("list.html");

在页面这样用:
1 <#include "/common/_paginate.html" />
2 <@paginate currentPage = blogPage.pageNumber totalPage = blogPage.totalPage actionUrl = "/blog/list/" />

 4.jf验证码怎么用?

(1)在controller中生成
//验证码
    @ClearInterceptor(ClearLayer.ALL)
    public void captcha(){
        render(new CaptchaRender("systemRandomCode"));
    }
(2)页面调用
<img src="/invoice/captcha" id="imgId" onclick="javascript:this.src='/invoice/captcha?' + new Date().getTime();" />
着色的地方,你懂的。

(3)验证正确性
String inputRandomCode = cl.getPara("user.verifycode");
        if (!CaptchaRender.validate(cl, inputRandomCode, "systemRandomCode")) {
            addError("verifycodeMsg", "验证码输入不正确,请重新输入!");
        }
来源:http://my.oschina.net/b1412/blog/65187
5.jf防止重复性提交

(1)创建token
 public void add() {
        createToken("blogToken", 30*60); //过期时间设置为30分钟
        render("add.html");
    }
(2)页面使用

<input type="hidden" name="blogToken" value="${blogToken}" />
(3)验证是否重复提交
validateToken("blogToken", "msg", "alert('上次已保存,请不要重复提交')");
来源:http://my.oschina.net/wangyongqing/blog/56134
6.JFinal 如何设置全局500与404错误跳转

全局404、500跳转在YourJFinalConfig extends JFinalConfig类中的configConstant(Constants me) 方法中配置即可:

me.setError404View("/common/error_404.html");me.setError500View("/common/error_500.html");

收集jfinal相关的问题

 单 个controller的500与404错误跳转可以在YourContrller中调用renderError404(...)与 renderError500(...)来实现,在Controller中调用renderError404与renderError500时可以指定 view也可以不指定,不指定时使用JFinalConfig中配置的view  :)
来源:http://www.oschina.net/question/582302_59502

7.有关JFinal的session处理

Controller中有关于session处理的方法,例如:

1 // 放数据至session
2 setSessionAttr("loginUser", loginUser);
3 // 取数据于session
4 User loginUser = getSessionAttr("loginUser");
5 // 删除session中的属性
6 removeSessionAttr("loginUser");
7 // 得到HttpSession
8 HttpSession session = getSession();

 最后一行代码,得到 session 以后,使用方式与以前做servlet开发一样了
来源:http://www.oschina.net/question/257750_61292
8.开启打印sql语句

创建 ActiveRecordPlugin时开启,下面是例子:

1 ActiveRecordPlugin arp = new ActiveRecordPlugin(c3p0Plugin)
2 .setShowSql(true)
3 .addMapping("subject", Subject.class)
4 .addMapping("user", User.class)
5 .addMapping("article", Article.class)
6 .addMapping("teacher", Teacher.class)
7 me.add(arp);

这里用到了JFinal的链式方法链用,JFinal有大量的方法采用链式结构,例如 Controller.setAttr(...).setAttr(...).render("index.html");,以及 yourModel.set(...).set(...).update();这种方式可以减少代码量,让代码更整洁 :)
来源:http://www.oschina.net/question/203191_60207
9.如果我想用全局变量,在jfinalConfig中能配置吗?如果可以,在controler中怎么用呢?类似servlet 中的init方法,我可以初始化一些会用到的变量。
在继承jfinalConfig 的类中,定义要用到的成员变量。如

public Demo extends JfinalConfig{
   public static Person p;
}

在controller中用到的地方,Demo.p.sayHello("Hi,Demo!");
10、如何在JfinalConfig 中读取属性文件?
支持读取properties文件和txt文件,因为写为都是key=value的键值对
使用loadPropertyFile("conf.txt"),其中conf.txt文件放在WEB-INF的目录下。
如果有其它目录,写全即可,如loadPropertyFile("conf/mail.txt")

 


待续……

你可能感兴趣的:(收集jfinal相关的问题)