开发者社区> 问答> 正文

对JFinal的一点改进建议:报错 

@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中的一点改进型建议,谢谢

展开
收起
kun坤 2020-06-04 21:06:52 343 0
1 条回答
写回答
取消 提交回答
  • 第一个问题jfinal-ext最新的2.1版本中有相应实现。
    第二个问题,个人认为可以在onfigRoute(Routes me)种定义多个内置方法,每个方法对应一个模块群。

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

    个人愚见,仅供参考。 ######jfinal-ext 是别人开发的基于jfinal的扩展包吗?######

    引用来自“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的字面意思搞混淆了,没仔细阅读代码 ######常来提建议啊,这两个问题很有深度了
    2020-06-08 11:22:14
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Java Spring Boot开发实战系列课程【第7讲】:Spring Boot 2.0安全机制与MVC身份验证实战(Java面试题) 立即下载
Java Spring Boot开发实战系列课程【第15讲】:Spring Boot 2.0 API与Spring REST Docs实战 立即下载
Java Spring Boot开发实战系列课程【第6讲】:Spring Boot 2.0实战MyBatis与优化(Java面试题) 立即下载