如何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。