文档章节

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

木川瓦兹
 木川瓦兹
发布于 2013/04/23 12:53
字数 3086
阅读 7774
收藏 92

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

    刚刚整理,先发了,一会儿处理格式。


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


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








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添加<dependency>了


【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也可以,方法多多:)




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


SELECT id,username,password from users;


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


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


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


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啦


<Connector URIEncoding="UTF8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>


<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF8"/>






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


<table class="info">
    <tr>
        <th>编号</th>
        <th>学号</th>
        <th>姓名</th>
        <th>年龄</th>
        <th>性别</th>
        <th>身份证号</th>
        <th>操作</th>
    </tr>
<c:forEach items="${stuList}" var="stu">
<tr>
<td>${stu.id}</td>
<td>${stu.Cno}</td>
<td>${stu.Name}</td>
<td>${stu.Age}</td>
<td>${stu.Gender}</td>
<td>${stu.Identity}</td>
<td>
   <a class="edit">修改</a>
   <a class="delete">删除</a>
</td>
</tr>
</c:forEach>
</table>


点击edit发出post操作:


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


后台处理:
@Before(POST.class)
public void edit() {
    int idValue = getParaToInt();  ....
}




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


【答】:前端页面:
/**
 * ajax提交
 * @param param
 * @param url
 * @param returl
 */
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(...)系列方法即可


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


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


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


1:在Controller 中定义属性


2:创建setter、getter方法


3:修改xml添加para拦截器


4:重启 web server 生效


    缺点有:


1:增加了代码量


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


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


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


5:框架复杂度提升


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




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


【jfinal答】:    JFinal 可以用 Handler 完全自定义路由规则,目前 JFinal 采用的路由规则兼顾了简单、高效、可用性方面的考虑。
    楼主提到的OSChina的这个url JFinal在不使用Handler的情况下可以换种方式实现:http://www.oschina.net/question/ask/project/JFinal-user-201137,也即 url中传送的参数 JFinal是采用减号"-"分隔的,而OSC采用正斜杠进行分隔,JFinal采用的方式让url层次变浅,更有利于SEO。
分隔符可以自定义,减号“-”是默认分隔符。即便出现冲突,至少有三种解决办法:
1:用别的字符转义,后端再转换回来
2:问号挂参
3:表单域传参




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


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




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 
  pageSize=housePage.pageSize 
  currentPage=housePage.pageNumber 
  totalPage=housePage.totalPage 
  actionUrl="/news/news_list/" 
  urlParas="-${otherPara}" />
urlParas 也可以是问号挂参的形式,如:
urlParas="?var=${var}"




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


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




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


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




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


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


1:性能问题


    JFinal 仅对 servlet 进行了极薄封装,理论上来说性能接近纯 servlet,框架属于MVC + ORM 但整体代码仅一万多行,属于超轻量级开发框架。除此之外 JFinal 核心经过精心的优化,如路由匹配、Action缓存等。


2:功能问题


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


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




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


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




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


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


/**
 * Provide a context path to view if you need.
 * <br>
 * Example:<br>
 * In JFinalFilter: handlers.add(new ContextPathHandler("CONTEXT_PATH"));<br>
 * in freemarker: <img src="${BASE_PATH}/images/logo.png" />
 */
public class ContextPathHandler extends Handler {




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


【答】:页面提交参数


user.name=xx 


user.age=xx


后台获取


getModel(User.class);


可以参考官方的demo




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


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


users[0].age=11


users[0].name=1


users[1].age=22


users[1].name=2


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


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




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


for (int i=0; i<size; i++) {
  getModel(User.class, "user" + i).save();
}
    针对于你在问答中的这类形式的参数:users[0].age  users[1].age,可以这样解决:


for (int i=0; i<size; i++) {
  getModel(User.class, "user[" + i + "]").save();
}
   可以走得更远,在 YourController 方法中实现:


public List<Model> getModels(Class<? extends Model> modelClass) {
  // TODO
}
     有时间我会考虑在新版本中加入这个特性,如果哪位童鞋先实现了这个方法,可以发给我先看看 :)






18.【问】:Jfinal 如何在Interceptor获取session
如何在拦截器 Interceptor获取 session来拦截用户未登录


【jfinal答】:权限用拦截器来做最合适了,一般代码形式如下:


public class AuthInterceptor implements Interceptor {
  public void intercept(ActionInvocation ai) {
    Controller controller = ai.getController();
    User loginUser = controller.getSessionAttr("loginUser");
    if (loginUser != null && loginUser.canVisit(ai.getActionKey()))
      ai.invoke();
    else
      controller.redirect("/login.html");
}




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

© 著作权归作者所有

共有 人打赏支持
木川瓦兹

木川瓦兹

粉丝 47
博文 6
码字总数 6648
作品 1
丰台
程序员
加载中

评论(21)

木川瓦兹
木川瓦兹

引用来自“前世疯狂”的评论

最近公司的项目在使用JFinal开发,其中遇到了一些疑惑找不到好的解决方法。有A,B,C三个Service,其中A,B想要调用C中的方法,但是JFinal好像不支持非Controller类以为的IOC。如果不能在A,B中注入C,是不是需要我将C中的方法分别在A,B中重新实现?还有一个问题就是new User().set("name", "James").set("age", 25).save();按照文档中的实现方式确实比较方便,但也有相关的问题暴露出来了,如果数据库中对应User类的表中name字段发生了改变,变成了userName,那么上面的代码在编译的时候是不会报错的,会一直隐藏到运行期调用它的时候,这无形之中给测试部门增加了巨大的压力,不知道对处理这个问题有没有什么好的方法

@jfinal
前世疯狂
前世疯狂
最近公司的项目在使用JFinal开发,其中遇到了一些疑惑找不到好的解决方法。有A,B,C三个Service,其中A,B想要调用C中的方法,但是JFinal好像不支持非Controller类以为的IOC。如果不能在A,B中注入C,是不是需要我将C中的方法分别在A,B中重新实现?还有一个问题就是new User().set("name", "James").set("age", 25).save();按照文档中的实现方式确实比较方便,但也有相关的问题暴露出来了,如果数据库中对应User类的表中name字段发生了改变,变成了userName,那么上面的代码在编译的时候是不会报错的,会一直隐藏到运行期调用它的时候,这无形之中给测试部门增加了巨大的压力,不知道对处理这个问题有没有什么好的方法
静静的白桦林
静静的白桦林
很受益,多谢楼主。
l
lvosc3mc
受益匪浅,
光石头
光石头

引用来自“JFinal”的评论

引用来自“屁屁果”的评论

引用来自“屁屁果”的评论

引用来自“飞翔的猴子”的评论

引用来自“屁屁果”的评论

引用来自“JFinal”的评论

引用来自“屁屁果”的评论

额,jfinal适用小项目,不太适合多人参与的复杂项目,几个人的项目jfinal,人多表多的时候,估计就是风险不可控的状态了。请大家公布一下,项目组超过10人,数据库超过40张表的jfinal项目……

正好相反,JFinal更适合大型项目,简洁的力量是无比强大的,这才能够将开发者从技术与工具中解放出来从而更专注所要解决的问题。我目前用JFinal做的网校网(http://wangxiaowang.com)是 94 张表。见过最大的JFinal项目超过400张表,开发团队近30人。至于JFinal复杂项目trafree.com国际机票B2B平台,里面光是机票退改签就非常复杂了。建议 @屁屁果 用JFinal真正去开发一个项目再加以客观的评论,而不是随意猜测

如果是作者参与的项目,我无话可说……

我觉得不管作者怎么说你可能也不太相信,唯一的办法就是你自己试试才能知道可不可以。客观的说我也很期待结果。希望你有机会试试,有结果后@ 我一下

额,我们试过了,要不然我怎么知道事务不嵌套的?!后来查看了源码才知道,而jfinal没有把这个缺陷写入文档……

我和我的同事,工作经验都在5年之上,我们一直认为,项目的维护周期远远长于开发周期,我们甚至面临项目组人员更换80%的情况,甚至包括项目架构人员。我们一致认为,jfinal的map属性,对于长期项目的后期维护,绝对是噩梦……

@屁屁果 仍然在随意猜测,wangxiaowang.com这个项目维护两年了,现在仍然非常敏捷,完全没有你所谓的噩梦,你一直将JFinal不支持嵌套事务当成是缺陷,这其实只是一个功能而已,下一版JFinal绝对支持这个功能,并且确保这个功能添加与改动的代码不超过50行,请 @屁屁果 不要将暂不支持的功能当成是缺陷

嗯,不是缺陷,是个敏捷的优点吧.
forai
forai

引用来自“JFinal”的评论

引用来自“屁屁果”的评论

引用来自“屁屁果”的评论

引用来自“飞翔的猴子”的评论

引用来自“屁屁果”的评论

引用来自“JFinal”的评论

引用来自“屁屁果”的评论

额,jfinal适用小项目,不太适合多人参与的复杂项目,几个人的项目jfinal,人多表多的时候,估计就是风险不可控的状态了。请大家公布一下,项目组超过10人,数据库超过40张表的jfinal项目……

正好相反,JFinal更适合大型项目,简洁的力量是无比强大的,这才能够将开发者从技术与工具中解放出来从而更专注所要解决的问题。我目前用JFinal做的网校网(http://wangxiaowang.com)是 94 张表。见过最大的JFinal项目超过400张表,开发团队近30人。至于JFinal复杂项目trafree.com国际机票B2B平台,里面光是机票退改签就非常复杂了。建议 @屁屁果 用JFinal真正去开发一个项目再加以客观的评论,而不是随意猜测

如果是作者参与的项目,我无话可说……

我觉得不管作者怎么说你可能也不太相信,唯一的办法就是你自己试试才能知道可不可以。客观的说我也很期待结果。希望你有机会试试,有结果后@ 我一下

额,我们试过了,要不然我怎么知道事务不嵌套的?!后来查看了源码才知道,而jfinal没有把这个缺陷写入文档……

我和我的同事,工作经验都在5年之上,我们一直认为,项目的维护周期远远长于开发周期,我们甚至面临项目组人员更换80%的情况,甚至包括项目架构人员。我们一致认为,jfinal的map属性,对于长期项目的后期维护,绝对是噩梦……

@屁屁果 仍然在随意猜测,wangxiaowang.com这个项目维护两年了,现在仍然非常敏捷,完全没有你所谓的噩梦,你一直将JFinal不支持嵌套事务当成是缺陷,这其实只是一个功能而已,下一版JFinal绝对支持这个功能,并且确保这个功能添加与改动的代码不超过50行,请 @屁屁果 不要将暂不支持的功能当成是缺陷

太好啦,非常期待下一版本的JFinal。
JFinal
JFinal

引用来自“屁屁果”的评论

引用来自“屁屁果”的评论

引用来自“飞翔的猴子”的评论

引用来自“屁屁果”的评论

引用来自“JFinal”的评论

引用来自“屁屁果”的评论

额,jfinal适用小项目,不太适合多人参与的复杂项目,几个人的项目jfinal,人多表多的时候,估计就是风险不可控的状态了。请大家公布一下,项目组超过10人,数据库超过40张表的jfinal项目……

正好相反,JFinal更适合大型项目,简洁的力量是无比强大的,这才能够将开发者从技术与工具中解放出来从而更专注所要解决的问题。我目前用JFinal做的网校网(http://wangxiaowang.com)是 94 张表。见过最大的JFinal项目超过400张表,开发团队近30人。至于JFinal复杂项目trafree.com国际机票B2B平台,里面光是机票退改签就非常复杂了。建议 @屁屁果 用JFinal真正去开发一个项目再加以客观的评论,而不是随意猜测

如果是作者参与的项目,我无话可说……

我觉得不管作者怎么说你可能也不太相信,唯一的办法就是你自己试试才能知道可不可以。客观的说我也很期待结果。希望你有机会试试,有结果后@ 我一下

额,我们试过了,要不然我怎么知道事务不嵌套的?!后来查看了源码才知道,而jfinal没有把这个缺陷写入文档……

我和我的同事,工作经验都在5年之上,我们一直认为,项目的维护周期远远长于开发周期,我们甚至面临项目组人员更换80%的情况,甚至包括项目架构人员。我们一致认为,jfinal的map属性,对于长期项目的后期维护,绝对是噩梦……

@屁屁果 仍然在随意猜测,wangxiaowang.com这个项目维护两年了,现在仍然非常敏捷,完全没有你所谓的噩梦,你一直将JFinal不支持嵌套事务当成是缺陷,这其实只是一个功能而已,下一版JFinal绝对支持这个功能,并且确保这个功能添加与改动的代码不超过50行,请 @屁屁果 不要将暂不支持的功能当成是缺陷
无聊的人们啊
无聊的人们啊

引用来自“屁屁果”的评论

引用来自“屁屁果”的评论

引用来自“飞翔的猴子”的评论

引用来自“屁屁果”的评论

引用来自“JFinal”的评论

引用来自“屁屁果”的评论

额,jfinal适用小项目,不太适合多人参与的复杂项目,几个人的项目jfinal,人多表多的时候,估计就是风险不可控的状态了。请大家公布一下,项目组超过10人,数据库超过40张表的jfinal项目……

正好相反,JFinal更适合大型项目,简洁的力量是无比强大的,这才能够将开发者从技术与工具中解放出来从而更专注所要解决的问题。我目前用JFinal做的网校网(http://wangxiaowang.com)是 94 张表。见过最大的JFinal项目超过400张表,开发团队近30人。至于JFinal复杂项目trafree.com国际机票B2B平台,里面光是机票退改签就非常复杂了。建议 @屁屁果 用JFinal真正去开发一个项目再加以客观的评论,而不是随意猜测

如果是作者参与的项目,我无话可说……

我觉得不管作者怎么说你可能也不太相信,唯一的办法就是你自己试试才能知道可不可以。客观的说我也很期待结果。希望你有机会试试,有结果后@ 我一下

额,我们试过了,要不然我怎么知道事务不嵌套的?!后来查看了源码才知道,而jfinal没有把这个缺陷写入文档……

我和我的同事,工作经验都在5年之上,我们一直认为,项目的维护周期远远长于开发周期,我们甚至面临项目组人员更换80%的情况,甚至包括项目架构人员。我们一致认为,jfinal的map属性,对于长期项目的后期维护,绝对是噩梦……

这问题个人觉得还不能说是一定是这样的,给自己公司做项目初期规划好了,还是比较容易维护的(毕竟很简洁代码量少),如果是做其他外包的项目的话,规划不好肯定会很乱的。
光石头
光石头

引用来自“屁屁果”的评论

引用来自“飞翔的猴子”的评论

引用来自“屁屁果”的评论

引用来自“JFinal”的评论

引用来自“屁屁果”的评论

额,jfinal适用小项目,不太适合多人参与的复杂项目,几个人的项目jfinal,人多表多的时候,估计就是风险不可控的状态了。请大家公布一下,项目组超过10人,数据库超过40张表的jfinal项目……

正好相反,JFinal更适合大型项目,简洁的力量是无比强大的,这才能够将开发者从技术与工具中解放出来从而更专注所要解决的问题。我目前用JFinal做的网校网(http://wangxiaowang.com)是 94 张表。见过最大的JFinal项目超过400张表,开发团队近30人。至于JFinal复杂项目trafree.com国际机票B2B平台,里面光是机票退改签就非常复杂了。建议 @屁屁果 用JFinal真正去开发一个项目再加以客观的评论,而不是随意猜测

如果是作者参与的项目,我无话可说……

我觉得不管作者怎么说你可能也不太相信,唯一的办法就是你自己试试才能知道可不可以。客观的说我也很期待结果。希望你有机会试试,有结果后@ 我一下

额,我们试过了,要不然我怎么知道事务不嵌套的?!后来查看了源码才知道,而jfinal没有把这个缺陷写入文档……

我和我的同事,工作经验都在5年之上,我们一直认为,项目的维护周期远远长于开发周期,我们甚至面临项目组人员更换80%的情况,甚至包括项目架构人员。我们一致认为,jfinal的map属性,对于长期项目的后期维护,绝对是噩梦……
光石头
光石头

引用来自“飞翔的猴子”的评论

引用来自“屁屁果”的评论

引用来自“JFinal”的评论

引用来自“屁屁果”的评论

额,jfinal适用小项目,不太适合多人参与的复杂项目,几个人的项目jfinal,人多表多的时候,估计就是风险不可控的状态了。请大家公布一下,项目组超过10人,数据库超过40张表的jfinal项目……

正好相反,JFinal更适合大型项目,简洁的力量是无比强大的,这才能够将开发者从技术与工具中解放出来从而更专注所要解决的问题。我目前用JFinal做的网校网(http://wangxiaowang.com)是 94 张表。见过最大的JFinal项目超过400张表,开发团队近30人。至于JFinal复杂项目trafree.com国际机票B2B平台,里面光是机票退改签就非常复杂了。建议 @屁屁果 用JFinal真正去开发一个项目再加以客观的评论,而不是随意猜测

如果是作者参与的项目,我无话可说……

我觉得不管作者怎么说你可能也不太相信,唯一的办法就是你自己试试才能知道可不可以。客观的说我也很期待结果。希望你有机会试试,有结果后@ 我一下

额,我们试过了,要不然我怎么知道事务不嵌套的?!后来查看了源码才知道,而jfinal没有把这个缺陷写入文档……
OSC上关于Jfinal的提问整理(二)

1.【问】:Db.tx(new IAtom())事务不起作用? 【jfinal答】:1:如果使用的mysql,确保引擎为 InnoDB 2:这行代码改一下Db.save(c3p0Plugin.getDataSource(), "tbtest", "PKID", record);去掉...

木川瓦兹
2013/04/25
0
2
JFinal 3.4 发布,将极速贯彻到 UI 层

jfinal 的终极目标是全面实现软件开发整个过程的极速开发,极大提升开发效率,极大降低学习成本,极大提升开发体验 jfinal 诞生头五年,已实现 WEB + ORM + AOP 层面的极速开发,赢得了大量开...

JFinal
04/28
0
129
JFinal源码分析------Model的前世今生

嗯 好了 前几篇博文,我们主要是说一些初始化的东西,现在,我们可能需要看看另外的东西了,也就是关于和数据库相关的东西了。在Demo中的,我们最想接触到的除了Controller,Config之外的东西...

天蓬小猪
2013/06/13
0
7
JFinal极速开发实战教程新鲜出炉~

JFinal极速开发实战教程新鲜出炉~ [持续更新中...] JFinal框架让 IT 工程师发挥更大的潜能,实现更大价值,同时也希望 JFinal 工具力量能帮助正在创业的朋友们提升效率、降低成本从而实现创业...

山东-小木
2015/01/07
0
13
JFinal框架学习-----EhCachePlugin的使用

一.关于EhCachePlugin 在之前的文章中,我们已经介绍过了JFinal中Cache的一些简单使用,这篇文章将讲述EhCachePlugin的使用, EhCachePlugin是JFinal集成的缓存插件,通过使用EhCachePlugin...

Carol998
10/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

帧动画(wifi信号动态动画)

准备六张wifi不同信号强度的素材图片,复制到drawable目录中 在drawable目录中新建frame文件,并编写代码 <animation-list xmlns:android="http://schemas.android.com/apk/res/android"> ...

lanyu96
24分钟前
1
0
快速get到学习Linux操作系统的点

Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。Linux能够运行主要的UNIX工具软件、网络协议和应用程序。它支持32位...

问题终结者
32分钟前
1
0
Django2 model操作数据库

1.将应用(如learn)添加到安装应用配置中 将我们新建的应用(learn)添加到 settings.py 中的 INSTALLED_APPS中,告诉Django有这么一个应用。 INSTALLED_APPS = [ 'django.contrib.ad...

MichaelShu
34分钟前
1
0
SpringBoot基础篇Bean之条件注入之注解使用

更多Spring文章,欢迎点击 一灰灰Blog-Spring专题 bean的条件注入,除了前面一篇博文中介绍的通过@Conditional注解配合Condition接口的实现之外,还提供了更多简化的注解使用方式,省略了自己...

小灰灰Blog
45分钟前
1
0
git clone 报错 Clone failed: Authentication failed for

新装了系统,git和phpstorm的配置全都没有了,重新安装了git和phpstorm 系统:windows10 代码托管平台:阿里云code 软件的安装不作赘述。 报错1 Could not read from remote repository 解决...

Marhal
47分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部