0

如果我尝试在缺少所需输入参数的 xml-script 中调用服务,则会引发 ServiceException,并且调用会以 200 状态返回到浏览器。我不明白我应该如何捕捉错误或以其他方式处理它。在调用服务之前我需要测试完整性吗?为什么不生成并返回 500 级状态?

4

1 回答 1

0

当脚本出错时,会在 messageFacade 中添加错误,因此您可以通过 ec.message.hasError() 检测转换中的 xml-script 或服务是否有错误。如果脚本中存在逻辑错误而不是异常,您应该自己将错误添加到 messageFacade。

然后在将响应返回给客户端之前,您应在条件响应中检查 ec.message.hasError() 并使用 ec.web.response.setStatus() 返回您想要的任何代码(在您的情况下为 500)

<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>
于 2014-04-08T08:12:09.193 回答