如何validation使用Struts2 Json插件发送的JSON而不抛出exception

假设一个动作中有一个Double变量,并且在请求体中发送的值是这样的

 {"dblField":""} 

interceptorStack看起来像:

    <!---->   true    idIo    

然后该动作抛出一个NumberFormatException ,根据这里的插件源代码很好 – https://github.com/apache/struts2/blob/STRUTS_2_3_15_X/plugins/json/src/main/java/org/apache/struts2/ JSON / JSONPopulator.java

但是这个exception没有在插件中处理,因此,从动作抛出exception返回,这导致global-exception-handler的触发。

如果使用查询字符串发送相同的请求, ?dblField=则操作返回INPUT 。 那么,我怎样才能使json-plugin以相同的方式返回INPUT并设置适当的fieldErrors而不是抛出NumberFormatException并触发globalExceptionHandler呢?

您可以通过扩展json拦截器和覆盖intercept方法来在您自己的拦截器而不是json拦截器之前放置exception拦截intercept ,您可以捕获错误。 然后,您可以添加操作错误或重新抛出可以在操作配置中或全局映射的自定义exception。

  

这样,您可以将所有json拦截器错误映射到您的自定义exception。