6
回答
对JFinal的一点改进建议
终于搞明白,存储TCO原来是这样算的>>>   

@JFinal 你好,想跟你请教个问题:

最近刚接触JFinal,感觉设计上很棒。以前基本上使用SpringMVC,就两者而言,对JFinal提一点改进性建议。

1.在ActionHandler中增加一个ExceptionResolver,通常在Service层,对于可预见的业务逻辑异常(例如登录密码错误),是直接抛出一个自定义的BusinessException,里面往往含有自定义异常码和异常解释(例如:INVALID_PASSWORD,密码错误),而在controller层并不采用try-catch模块进行判断,而是将异常交给上层统一捕获处理,目前的ActionHandler中,在捕获最终Exception后,仅仅是渲染出简单的500页面(这里可以自定义ErrorRander,但是无法获取自定义异常码和异常信息),功能较为单一,希望参考SpringMVC中的HandlerExceptionResolver进行扩展。如果目前Jfinal支持这种功能,也希望能给出案例,目前我是没有找到。

2.在JFinalConfig的configRoute(Routes me)这里,是否可以改进成数组模式,即例如:

me.add("/customer", new Class[] {RegisterController.class, LoginController.class}, "/customer"},

因为在多数较为复杂点的逻辑中,可能需要对于同一个域下的功能进行细化。

以上是使用Jfinal中的一点改进型建议,谢谢

举报
simananzhui
发帖于4年前 6回/716阅
共有6个答案 最后回答: 4年前

第一个问题jfinal-ext最新的2.1版本中有相应实现。

第二个问题,个人认为可以在onfigRoute(Routes me)种定义多个内置方法,每个方法对应一个模块群。

void onfigRoute(Routes me){
   moduleGroup1(me);
   moduleGroup2(me);
   ...
}
还有 jfinal-ext中有自动注册route的插件。

个人愚见,仅供参考。

引用来自“simananzhui”的答案

jfinal-ext 是别人开发的基于jfinal的扩展包吗?
对的。也是一个JFinal重度使用者。

引用来自“玛雅牛”的答案

第一个问题jfinal-ext最新的2.1版本中有相应实现。

第二个问题,个人认为可以在onfigRoute(Routes me)种定义多个内置方法,每个方法对应一个模块群。

void onfigRoute(Routes me){
   moduleGroup1(me);
   moduleGroup2(me);
   ...
}
还有 jfinal-ext中有自动注册route的插件。

个人愚见,仅供参考。

jfinal-ext 2.1版本只实现了简单的处理方式,在ExceptionInterceptor只能对对应的exception跳转到对应的固定页面,没办法获取异常的提示信息,而且,在ExceptionInterceptor这个类中,只是为了获取一个HashMap就引入了一个非常用类 com.google.common.collect.Maps, 个人感觉极度得不偿失。

    非常感谢楼主提出这么有深度的建议,第一个建议在最初有过设想,但由于可以通过定义一个全局拦截器来解决问题,自定义拦截器自由度更高,可以随心所欲定制异常处理方法,所以也就没有做这个功能,我先列到备忘中去,以后仔细考虑一下是否要做。

    第二个建议,头一次看到这个建议,感觉很新颖,相当于可以将多个controller中的action合并到一个url前缀中去,用起来还是很方便的,但是JFinal每一个Action对象目前是与Controller一一对应的,所以做起来改动会比较大,还需要权衡,如果无法找到简洁方案,为了保持JFinal极简风格就不会做进去。

    另外,第二个建议可以通过使用 @ActionKey 这个注解来实现,只不过稍多点代码。也可以在需要合并的其中一个Controller中添加所有action方法,然后再forward到另一个controller 中的action中去。

    再次感谢提出这么有深度的问题,我会备忘,仔细权衡 

引用来自“JFinal”的答案

    非常感谢楼主提出这么有深度的建议,第一个建议在最初有过设想,但由于可以通过定义一个全局拦截器来解决问题,自定义拦截器自由度更高,可以随心所欲定制异常处理方法,所以也就没有做这个功能,我先列到备忘中去,以后仔细考虑一下是否要做。

    第二个建议,头一次看到这个建议,感觉很新颖,相当于可以将多个controller中的action合并到一个url前缀中去,用起来还是很方便的,但是JFinal每一个Action对象目前是与Controller一一对应的,所以做起来改动会比较大,还需要权衡,如果无法找到简洁方案,为了保持JFinal极简风格就不会做进去。

    另外,第二个建议可以通过使用 @ActionKey 这个注解来实现,只不过稍多点代码。也可以在需要合并的其中一个Controller中添加所有action方法,然后再forward到另一个controller 中的action中去。

    再次感谢提出这么有深度的问题,我会备忘,仔细权衡 

增加拦截器确实能搞定第一个问题,之前被@before的字面意思搞混淆了,没仔细阅读代码
--- 共有 1 条评论 ---
JFinal常来提建议啊,这两个问题很有深度了 4年前 回复
顶部