如果我尝试在缺少必需输入参数的xml脚本中调用服务,则抛出ServiceException,并且调用返回到具有200状态的浏览器。我不知道我应该如何发现错误或以其他方式处理错误。在拨打服务之前,我是否需要测试完整性?为什么不生成并返回500级状态?
答案 0 :(得分:0)
当脚本出错时,会添加错误messageFacade,因此您可以通过ec.message.hasError()检测转换中的xml脚本或服务是否有错误。如果脚本中存在逻辑错误而不是异常,则应该自行向messageFacade添加错误。
然后在将响应返回给客户端之前,您应检查条件响应中的ec.message.hasError()并使用ec.web.response.setStatus()返回您想要的任何代码(在您的情况下为500)< / p>
<transition name="createSample">
<actions>
... some service-call or xml-actions ...
<if condition="ec.message.hasError()">
ec.web.response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR)
</if>
</actions>
<conditional-response type="none">
<condition>
<expression>ec.message.hasError()</expression>
</condition>
</conditional-response>
<default-response url="."/>
</transition>