如何在转换中处理xml脚本中的错误

时间:2014-03-28 05:33:39

标签: moqui

如果我尝试在缺少必需输入参数的xml脚本中调用服务,则抛出ServiceException,并且调用返回到具有200状态的浏览器。我不知道我应该如何发现错误或以其他方式处理错误。在拨打服务之前,我是否需要测试完整性?为什么不生成并返回500级状态?

1 个答案:

答案 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>