`
hulianwang2014
  • 浏览: 690189 次
文章分类
社区版块
存档分类
最新评论
  • bcworld: 排版成这样,一点看的欲望都没有了
    jfinal

jfinal

 
阅读更多

看见Jfinal很火,就手痒痒了,想学一下,无奈入门较慢,没有找到比较全的文档。于是就经常看讨论区大家的提问与解答。后来就忽然萌生了整理下来的想法。其中的问题如果是 Jfinal 回答的,那我就标注了【jfinal答】。

<wbr><wbr>刚刚整理,先发了,一会儿处理格式。</wbr></wbr>

<wbr></wbr>

1.【问】:Jfina如何不区分数据库列名的大小写?
我这儿随时出现 The attribute name is not exists: regdate,改成regDate就OK.怎么设置不区分大小写呢??


【答】: ActiveRecordPlugin ar = new ActiveRecordPlugin();
// 配置大小写不敏感
arp.setContainerFactory(new CaseInsensitiveContainer<wbr>Factory(true));</wbr>


2.【问】:jfinal用maven构建项目的所依赖jar的groupId和artifactId等信息
你好~ 我想问下jfinal用maven构建项目的所依赖jar的groupId和artifactId 等信息在什么地方找的到啊~


【答】:你可以把JFinal的jar添加到本地的Maven库中,具体命令如下


mvn install:install-file -DgroupId=com.jfinal -DartifactId=jfinal -Dversion=1.2 -Dpackaging=jar -Dfile=你本地jfinal的jar包的路径


然后在pom.xml中就可以按照上面定义的groupId和artifactId还有version添加了


【jfinal答】:JFinal没有使用maven来构建,因为JFinal自身对第三方jar无依赖,弄上maven反而事更多了 :)


3.【问】:要是controller中一个方法 返回json数据的话应该加什么东东么~ 和SpringMVC的@ResponseBody这个功能相似么~ 还是要自己组拼啊 刚刚接触jfinal 请指教下...


【jfinal答】:Controller中返回Json数据主要有两种方法:一是先使用setAttr("blogList",blogList), setAttr("user", user)...将值都set好,然后调用一下 renderJson()方法。第二种方法是直接 renderJson("blogList", blogList)。第一种方法适合将多个对象转换成json并返回客户端;第二种方法适合仅转换指定的对象为josn并返回客户端。你还可以自行生成json数据再调用 renderHtml(jsonString)来返回,或者自定义JsonRender也可以,方法多多:)

<wbr></wbr>

4.【问】:关于jfinal的Record字段顺序
想跟你请教个问题:现在想要根据SQL直接查询出Record给前端页面使用,想字段能够具有顺序,比如:


SELECTid,username,password from users;


希望record.getcolumNames()得到的列顺序也是按照id,username,password来的。


简单看了一下源码,在Record.columns中使用了HashMap的子类,而不是LinkedHashMap子类,所以我想现在是做不到的,请问一下是否有解决办法?


【jfinal答】:1:仿照 com.jfinal.plugin.activerecord.CaseInsensitiveContainer<wbr>Factory做个IContainerFactory实现类,例如叫:MyContainerFactory,注意将getColumnsMap()实现为返回LinkedHashMap。</wbr>


2:将这个MyContainerFactory对象在创建ActiveRecordPlugin时传入,如 arp.setContainerFactoryu(new MyContainerFactory())


5.【问】:jfinal 一个老生常谈的问题 乱码
遇到一个老生常谈的乱码问题,前台是get的方式提交请求 参数中有中文 中文也已经URLEncoder.encode编码,用jetty 能正常获取中文,用tomcat就乱码,tomcat的server.xml已经配置了URIEncoding="UTF8" 也重启了 还是乱码,这会是哪里没配置好?以前没用jfinal的时候是在web.xml里面添加一个过滤器来处理字符集 没出过这样的问题。会不会和apache有关系呢? 我的是apache+php+tomcat 请求是由apache转发给的tomcat。


【答】:找到问题了 果然是这个问题


Apache是使用AJP13模式代理到Tomcat的 所以需要把AJP13的编码也设置成 UTF8 这样就OK啦




6.【问】:有关jFinal的POST问题
想跟你请教个问题:在常见的CRUD操作中,如果我现在需要使用Ajax操作,应该如何结合jFinal实现。
我的代码是这样的:
前台页面:



<wbr style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><span style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"></span><wbr style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><br style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><span style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"></span><wbr style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><span style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"></span><wbr style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><span style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"></span><wbr style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><span style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"></span><wbr style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><span style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"></span><wbr style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><span style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"></span><wbr style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><br style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><span style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"></span><wbr style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><span style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"></span><wbr style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><span style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"></span><wbr style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><span style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"></span><wbr style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><span style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"></span><wbr style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><span style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"></span><wbr style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><br style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><span style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"></span><wbr style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><span style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"></span><wbr style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><span style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"></span><wbr style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><span style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"></span><wbr style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><span style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"></span><wbr style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><span style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"></span><wbr style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><br style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><span style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"></span><wbr style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><span style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"></span><wbr style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><span style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"></span><wbr style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><span style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"></span><wbr style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><span style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"></span><wbr style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><span style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"></span><wbr style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><br style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><span style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"></span><wbr style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><span style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"></span><wbr style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><span style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"></span><wbr style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><span style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"></span><wbr style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><span style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"></span><wbr style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><span style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"></span><wbr style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><br style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><span style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"></span><wbr style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><span style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"></span><wbr style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><span style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"></span><wbr style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><span style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"></span><wbr style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><span style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"></span><wbr style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><span style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"></span><wbr style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><br style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><span style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"></span><wbr style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><span style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"></span><wbr style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><span style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"></span><wbr style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><span style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"></span><wbr style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><span style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"></span><wbr style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><span style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"></span><wbr style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><br style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><span style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"></span><wbr style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><span style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"></span><wbr style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><br style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><br style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><br style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><br style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><br style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><br style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><br style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><br style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><br style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><br style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><br style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"><br style="font-family:simsun; font-size:14px; line-height:21px; background-color:rgb(130,198,46)"></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
编号学号姓名年龄性别身份证号操作
${stu.id} ${stu.Cno} ${stu.Name} ${stu.Age} ${stu.Gender} ${stu.Identity}
<wbr><a target="_blank" style="text-decoration:underline">修改</a><br><wbr><a target="_blank" style="text-decoration:underline">删除</a><br></wbr></wbr>


点击edit发出post操作:


$('.edit').on('click', function(){
$.post("/student/edit/", "id=" + id, function (data) {
<wbr><wbr>});<br> });</wbr></wbr>


后台处理:

@Before(POST.class)
public void edit() {
<wbr><wbr><wbr>int idValue = getParaToInt();<wbr>....<br> }</wbr></wbr></wbr></wbr>


这时候我发现无法取得id参数,也就是getParaToInt()方法返回值为null。


【答】:前端页面:


function do_ajaxSubmit(param,url,returl){
var params = $(param).serialize();
var eurl = encodeURI(url);
$.ajax({type:"POST",url:eurl, data:params, dataType:"json", error:function () {
alert("系统错误,请稍后重试");
}, success:function (data) {
if (data.type == 1) {
//art.dialog.alert(data.msg);
returl == null ? window.location.reload() : window.location.href=returl;
} else {
alert(data.msg);
}
}});
}
【jfinal答】:在Servler端与传统用法基本一样,只是响应数据通常是json格式,所以JFinal在Controller中一般使用renderJson(...)系列方法即可


<wbr><wbr>在Client端,就是js拿到json数据后更新一下html页面元素即可</wbr></wbr>


7.【问】:jfinal的action中获取参数获取是否可以进一步优化?
考虑到多个action方法可能会用到一些共用参数,jfinal是否可以类似于struts那样能给controller中的私有属性自动赋值而不用getPara或setAttr即可直接使用这些参数?这样子就会方便很多。


【jfinal答】:Struts给私有属性自动赋值的方式,要做以下的事情:


1:在Controller 中定义属性


2:创建setter、getter方法


3:修改xml添加para拦截器


4:重启web server生效


<wbr><wbr>缺点有:</wbr></wbr>


1:增加了代码量


2:共用参数增加了各action耦合度


3:定义在Controller中的属性大多数情况对某些action是无用的


4:依赖反射注入属性影响性能


5:框架复杂度提升


<wbr><wbr>楼主试用对比后应该能知道 JFinal 这样设计的好处 :)</wbr></wbr>

<wbr></wbr>


8.【问】:jfinal url访问参数配置方式
想跟你请教个问题:jfinal 不能PHP一样配置参数方式吗?<wbr><wbr><a target="_blank" href="http://www.oschina.net/question/ask/project/JFinal/user/201137" style="text-decoration:none">http://www.oschina.net/question/ask/project/JFinal/user/201137</a>,像这样?或者可以完全自己定义,我看代码里强调了了不能用/方式,能说下具体原因吗? 还有个问题,就是在程序目录名有空格的情况自动扫描会失败,判断目录不存在。</wbr></wbr>


【jfinal答】:<wbr><wbr><wbr>JFinal 可以用 Handler 完全自定义路由规则,目前 JFinal 采用的路由规则兼顾了简单、高效、可用性方面的考虑。<br><wbr><wbr>楼主提到的OSChina的这个url JFinal在不使用Handler的情况下可以换种方式实现:<a target="_blank" href="http://www.oschina.net/question/ask/project/JFinal-user-201137" style="text-decoration:none">http://www.oschina.net/question/ask/project/JFinal-user-201137</a>,也即 url中传送的参数 JFinal是采用减号"-"分隔的,而OSC采用正斜杠进行分隔,JFinal采用的方式让url层次变浅,更有利于<span class="adtext" id="adtext_3" style="list-style:none; float:none; padding:0px; margin:0px; border-width:1px; border-style:solid; border-top-color:transparent; border-right-color:transparent; border-left-color:transparent; text-decoration:underline; word-wrap:normal; word-break:normal; display:inline!important">SEO</span>。<br> 分隔符可以自定义,减号“-”是默认分隔符。即便出现冲突,至少有三种解决办法:<br> 1:用别的字符转义,后端再转换回来<br> 2:问号挂参<br> 3:表单域传参</wbr></wbr></wbr></wbr></wbr>

<wbr></wbr>


9.【问】:Jfinal批量提交sql执行查询


【jfinal答】:建议使用 Db.batch(...)系列方法,里面很多重载,可以试试其它重载方法

<wbr></wbr>


10.【问】:jfinal的 @paginate分页中,怎么附加其他的参数传递?
想跟你请教个问题:


<@paginate totalRow=housePage.totalRow pageSize=housePage.pageSize currentPage=housePage.pageNumber totalPage=housePage.totalPage actionUrl="/news/news_list/" />


我想在actionUrl中添加其他的参数通过分页一起传递,不过在添加参数后,页码会自动加在最后的位置,而获取页码页面又默认获取第一个参数为页码,请问一下这里该如何来做?


【jfinal答】:JFinal demo 中提供的 _paginate.html文件,其中定义的宏paginate还具有urlParas这个参数,一般可以不去使用,楼主的需求,可以这样用:
<@paginate totalRow=housePage.totalRow
<wbr>pageSize=housePage.pageSize<br><wbr>currentPage=housePage.pageNumber<br><wbr>totalPage=housePage.totalPage<br><wbr>actionUrl="/news/news_list/"<br><wbr>urlParas="-${otherPara}" /&gt;<br> urlParas 也可以是问号挂参的形式,如:<br> urlParas="?var=${var}"</wbr></wbr></wbr></wbr></wbr>

<wbr></wbr>


11.【问】:JFinal 如何在保存方法里取得最后insert的主键ID


【jfinal答】:User user = new User().set(...).set(...);
user.save();
Integer id = user.getInt("id");

<wbr></wbr>


12:【问】:Jfinal 两个Controller跳转问题 ?


【Jfinal答】:setAttr 或者 forwardAction 的时候生成urlPara, 如 forwardAction("/abc/" + value);

<wbr></wbr>


13:【问】:Jfinal等框架选择(性能)


【jfinal答】:JFinal 核心特点是:开发效率高、代码量少、学习成本低、开发体验好。开源四个月以来,反馈一直非常好,充分体现了开发者对以上特点的关注度。你对开发框架提出的需求 JFinal 都可以满足:


1:性能问题


<wbr><wbr>JFinal 仅对<span class="adtext" id="adtext_6" style="list-style:none; float:none; padding:0px; margin:0px; border-width:1px; border-style:solid; border-top-color:transparent; border-right-color:transparent; border-left-color:transparent; text-decoration:underline; word-wrap:normal; word-break:normal; display:inline!important">servlet</span>进行了极薄封装,理论上来说性能接近纯 servlet,框架属于MVC + ORM 但整体代码仅一万多行,属于超轻量级开发框架。除此之外 JFinal 核心经过精心的优化,如路由匹配、Action缓存等。</wbr></wbr>


2:功能问题


<wbr><wbr>JFinal 拥有 struts2 绝大部分核心功能,文件上传下载等这些都是极常规的功能了,不仅支持而且几乎都是一行代码搞定。权限管理做一个全局拦截器就可以轻松搞定,公司目前的权限管理就是这么做的。Word、PDF、Excel这些貌似是前端的事了吧。</wbr></wbr>


<wbr><wbr>建议楼主先试用几天时间,由于学习成本低,一般来说两个小时即可上手开发 :)</wbr></wbr>

<wbr></wbr>


14.【问】:如何修改JFinal中默认的404和500的错误页面


【jfinal答】:在 YourJFinalConfig中的configConstant(Constants me)中进行配置:me.setError404View(...);me.setError500View(...)

<wbr></wbr>

15.【问】:JFinal访问路径问题
后台使用JFinal搭建,前端url怎么写访问路径?是绝对路径,还是相对路径?我有个小项目之前一直用jetty测试,今天部署到tomcat中后,发现所有的url路径都错了,之前(jetty)的写法是/user/login,部署到tomcat中需要改为user/login,把前面的斜线去掉,jetty调试时只需访问http://localhost:8089/,部署到tomcat后需要访问http://localhost:8089/JFProject请问这个问题怎么解决?谢谢~~


【答】:路径的问题用ContextPathHandler解决。我的经验是最好写绝对路径

<wbr></wbr>

16.【问】:关于JFinal自动获取页面提交参数映射到javabean的问题
前段时间给公司的小项目选web框架,发现了JFinal,感觉很不错,现在遇到一个问题,JFinal现在支不支持页面提交的参数自动映射到javabean啊?类似struts的form的概念,比较忙,也没时间翻论坛的帖子了,麻烦知道的朋友告诉我下,谢谢啊!


【答】:页面提交参数


user.name=xx


user.age=xx


后台获取


getModel(User.class);


可以参考官方的demo

<wbr></wbr>


17.【问】:JFinal如何接受多个model的参数。
比如我们有一个User的model。页面只要参数名字为user.age<wbr>user.name,后台可以用getModel得到 User的model然后进行保存更新工作。</wbr>


但是现在我是需要一次性添加多条数据,request参数如下


users[0].age=11


users[0].name=1


users[1].age=22


users[1].name=2


在传统的struts2中我们可以直接用一个list很方便的接受此类参数。


请问在jfinal的model中能否支持类似功能?

<wbr></wbr>

【jfinal答】:本想在Controller 中做个 getModels(...) 方法的,后来觉得这种需求可能太少,而且代码不太好看,所以留给开发者自己了。目前 JFinal 已有的功能也可以解决这个问提。只需要在表单中生成这样的input 域: user1.name<wbr>user2.name<wbr>user3.name,然后在 Controller 中这样:</wbr></wbr>


1
2
3
for (int i=0; i
<wbr>getModel(User.class, "user" + i).save();<br> }</wbr>

针对于你在问答中的这类形式的参数:users[0].age<wbr>users[1].age,可以这样解决:</wbr>

1
2
3
for (int i=0; i
<wbr>getModel(User.class, "user[" + i + "]").save();<br> }<br> 可以走得更远,在 YourController 方法中实现:</wbr>

1
2
3
public List getModels(Class

分享到:
评论
1 楼 bcworld 2014-05-30  
排版成这样,一点看的欲望都没有了

相关推荐

    基于JFinal的开源博客系统JFinal_Blog2.0版本

    JFinal_Blog是基于JFinal1.5开源系统搭建的博客系统,以91zcm.com 网站作为模板和演示demo,目前已经加入了OSC开源项目和Github。 一、V2.0 版本新增功能点及bug修复情况: 1、添加百度Ping服务; 2、添加百度...

    jfinal-4.9.01-all.zip

    从官网下载,放CSDN加速下载不等待,jfinal最新版本功能扩展依赖包。 JFinal 是基于 Java 语言的极速 WEB + ORM + AOP + Template Engine 框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、...

    jfinal 基于 Java 语言的极速 WEB + ORM 框架

    JFinal 是基于 Java 语言的极速 WEB + ORM 框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有Java语言所有优势的同时再拥有ruby、python、php等动态语言的开发效率!...

    jfinal-3.0-API文档-中英对照版.zip

    赠送jar包:jfinal-3.0.jar; 赠送原API文档:jfinal-3.0-javadoc.jar; 赠送源代码:jfinal-3.0-sources.jar; 赠送Maven依赖信息文件:jfinal-3.0.pom; 包含翻译后的API文档:jfinal-3.0-javadoc-API文档-中文...

    jfinal资源包包含源码

    1:jfinal-2.2-bin.jar 开发 jfinal 项目唯一必须的 jar 包,其它所有 jar 包都不是必须的 2:jfinal-2.2-src.zip jfinal 2.2 源代码 3:jfinal-2.2-bin-with-src.jar jfinal 2.2 开发包 + 源码 的整合,方便非...

    基于JFinal的开源博客系统JFinal_Blog2.0版本.zip

    JFinal_Blog是基于JFinal1.5开源系统搭建的博客系统,以91zcm.com 网站作为模板和演示demo,目前已经加入了OSC开源项目和Github。 一、V2.0 版本新增功能点及bug修复情况: 1、添加百度Ping服务; 2、添加百度...

    基于JFinal的开源博客系统JFinal_Blog1.1版本

    JFinal_Blog是基于JFinal1.5开源系统搭建的博客系统,以91zcm.com 网站作为模板和演示事例,目前已经加入了开源行列。 JFinal_Blog 1.1版本发布新增功能点: 1、将数据库连接池由C3P0升级为Druid实现; 2、废弃WEB-...

    jfinal-3.0-API文档-中文版.zip

    赠送jar包:jfinal-3.0.jar; 赠送原API文档:jfinal-3.0-javadoc.jar; 赠送源代码:jfinal-3.0-sources.jar; 赠送Maven依赖信息文件:jfinal-3.0.pom; 包含翻译后的API文档:jfinal-3.0-javadoc-API文档-中文...

    jfinal-3.1.jar

    jfinal

    Vue结合JFinal调用activiti工作流

    作为没用过工作流的一员,之前看过vue引入activiti工作流的案例,但是组件中存在很多问题,这个是我修改过并且成功调用,大家可以供参考,富含Java代码(Jfinal),后续出spring版本的, 前台版本vue4.0版本, ...

    jfinal-jfinal-weixin-master.zip 基于maven jfinal 的微信公众号/小程序开发demo

    jfinal-jfinal-weixin-master.zip 基于maven jfinal 的微信公众号/小程序开发demo

    基于jfinal+vue+ElementUI的前后端分离CRM系统.zip

    基于jfinal+vue+ElementUI的前后端分离CRM系统 主要技术栈 核心框架:jfinal3.8 缓存:redis caffeine 数据库连接池:Druid 工具类:hutool,fastjson,poi-ooxml 定时任务:jfinal-cron 项目构建工具:maven ...

    基于JFinal的开源博客系统

    本程序是基于JFinal 1.5做的一个小站,代码没有使用什么特别的东西,用到了@JFinal作者提到的FakeStaticHandler来伪静态,其他的没什么。小站刚开 始使用Lucene来作为全文检索,后面又改成了SQL like匹配,估计要被...

    jfinal实战项目-内部管理项目

    jfinal实战项目-企业内部管理项目,jfinal+layui,里面含有sql,导入eclipse里面就可以运行

    jfinal demo 3.2

    jfinal demo 3.2 , 学习开发当然要多看代码,jfinal 最新源码。MVC架构,设计精巧,使用简单 遵循COC原则,零配置,无xml 独创Db + Record模式,灵活便利 ActiveRecord支持,使数据库开发极致快速 极简、高性能...

    jfinal-weixin jfinal

    jfinal-weixin jfinal 微信支付快发开发jar包

    jfinal cms v4.7.1

    jfinal cms是一个java开发的功能强大的信息咨询网站,采用了简洁强大的JFinal作为web框架,模板引擎用的是beetl,数据库用mysql,前端bootstrap框架。 支持oauth2认证、帐号注册、密码加密、评论及回复,消息提示,...

    jfinal实例-官网

    jetty 等 web server 来启动,启动方式与非jfinal项目完全一样。 5: maven 项目还可以在控制台通过 mvn jetty:run 来启动 6: 打开浏览器输入 localhost 即可查看运行效果 注意: 请确保您安装了 JavaSE 1.6 或...

    1.3 JFinal入门_JFinal的HelloWorld.mp4

    1.3 JFinal入门_JFinal的HelloWorld.mp4

    jfinal-mail-plugin-3.0-API文档-中英对照版.zip

    赠送jar包:jfinal-mail-plugin-3.0.jar; 赠送原API文档:jfinal-mail-plugin-3.0-javadoc.jar; 赠送源代码:jfinal-mail-plugin-3.0-sources.jar; 赠送Maven依赖信息文件:jfinal-mail-plugin-3.0.pom; 包含...

Global site tag (gtag.js) - Google Analytics