再追问《波总》和《玛雅牛》一个问题,关于参数绑定的

使用的是jfinal-java8版本

  1. <dependency>
       <groupId>com.jfinal</groupId>
       <artifactId>jfinal-java8</artifactId>
       <version>3.3</version>
    </dependency>

在绑定参数类型不匹配的时候出了异常,我有什么办法能自行处理么?

public void valid(Integer id, String name, Long distance){
    renderText("saler3");
}

测试中,如果传递的参数id不是integer的时候

blob.png


ActionHandler会出现异常

<html>
    <head>
        <title>400 Error</title>
    </head>
    <body bgcolor='white'>
        <center>
            <h1>400 Error</h1>
        </center>
        <hr>
        <center>
            <a href='http://www.jfinal.com?f=ev-3.3' target='_blank'>
                <b>Powered by JFinal 3.3</b>
            </a>
        </center>
    </body>
</html>



可是我想把所有异常都自行处理成一致的json返回给前端,现在能有招儿么?


还是只能等3.4版的时候一并处理???

评论区

JFinal

2018-03-04 22:54

做个全局拦截器,统下处理异常,大致如下:
try {
inv.invoke();
} catch (Exception e) {
if (...)
inv.getController().renderJson();
else if(...)
...
else
...
}

wumugulu

2018-03-05 11:19

@JFinal 已经使用addGlobalActionInterceptor加了全局的拦截器,不过貌似这个错误是ActionHandler抛出的异常,在我的拦截器之前就已经跳出去了,所以拦截不到!

JFinal

2018-03-05 11:56

@wumugulu 在 configHandler 中通过 me.setActionHandler(new MyActionHandler(...) 来定制自己的 ActionHandler 即可打完收工

具体做的时候照着已有的 ActionHandler 来就可以了

wumugulu

2018-03-05 15:22

@JFinal 试下一下setActionHandler的方式,貌似搞不定,还得接着深入,动静有点儿贴大了

MyActionHandler... 111
2018-03-05 14:41:12 [WARN]-[com.jfinal.core.ActionException] Can not parse the parameter "1024b" to Integer value.
2018-03-05 14:41:12 [ERROR]-[com.jfinal.core.ActionHandler] /test/valid?name=jobs&id=1024b&distance=90.6708
com.jfinal.core.ActionException: Can not parse the parameter "1024b" to Integer value.
at com.jfinal.core.Controller.toInt(Controller.java:275)
at com.jfinal.core.Controller.getParaToInt(Controller.java:294)
at com.jfinal.core.paragetter.IntegerGetter.get(IntegerGetter.java:29)
at com.jfinal.core.paragetter.IntegerGetter.get(IntegerGetter.java:21)
at com.jfinal.core.paragetter.ParaProcessor.get(ParaProcessor.java:52)
at com.jfinal.aop.Invocation.(Invocation.java:53)
at com.jfinal.core.ActionHandler.handle(ActionHandler.java:91)
at com.wumugulu.xbook.common.handler.MyActionHandler.handle(MyActionHandler.java:13)

热门反馈

扫码入社