问题描述
假设动作中有一个 Double 变量,如果请求正文中发送的值类似于
Suppose there's a Double variable in an action, and if the value sent in the request body is something like
{"dblField":""}
interceptorStack 看起来像:
<action name="save" class="actions.MyAction" method="save">
<interceptor-ref name="jsonValidationWorkflowStack">
</interceptor-ref>
<!--<interceptor-ref name="loginStack"/>-->
<!-- I've tried using each of the above two separately, but both failed -->
<interceptor-ref name="json">
<param name="enableSMD">true</param>
</interceptor-ref>
<result type="json" name="*">
<param name="excludeProperties">
idIo
</param>
</result>
</action>
然后动作抛出NumberFormatException,根据插件源代码这里.
Then the action throws a NumberFormatException, which is fine according to the plugin source code here.
但是这个异常并没有在插件中处理,因此,从动作抛出异常返回,这导致 global-exception-handler 的触发.
But this exception is not handled in the plugin and hence, returns from the action throwing exception, which results in the firing of global-exception-handler.
如果使用查询字符串发送相同的请求,?dblField= 则操作返回 INPUT.
If the same request was sent using a query-string, ?dblField= then the action returns INPUT.
那么,我怎样才能使 json-plugin 以相同的方式返回 INPUT 并设置适当的 fieldErrors 而不是抛出 NumberFormatException并触发 globalExceptionHandler?
So, how can I make the json-plugin behave in the same way to return INPUT and set appropriate fieldErrors instead of throwing NumberFormatException and firing the globalExceptionHandler?
推荐答案
你可以把 exception 拦截器 在你自己的拦截器之前而不是 json 拦截器 通过扩展 json 拦截器并覆盖 intercept 方法,您可以在其中捕获错误.然后,您可以添加操作错误或重新抛出自定义异常,您可以在操作配置中或全局映射.
You could place exception interceptor before your own interceptor instead of the json interceptor by extending json interceptor and override intercept method where you can catch errors. Then you can either add action errors or rethrow a custom exception which you can map in the action config or globally.
<exception-mapping exception="org.exceptionmapping.CustomException"
result="errorresult"/>
这样您可以将所有仅 json 的拦截器错误映射到您的自定义异常.
This way you can map all json only interceptor errors with your custom exception.
这篇关于如何验证使用 Struts2 JSON 插件发送的 JSON 而不抛出异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!


大气响应式网络建站服务公司织梦模板
高端大气html5设计公司网站源码
织梦dede网页模板下载素材销售下载站平台(带会员中心带筛选)
财税代理公司注册代理记账网站织梦模板(带手机端)
成人高考自考在职研究生教育机构网站源码(带手机端)
高端HTML5响应式企业集团通用类网站织梦模板(自适应手机端)