1

让我先解释一下我在做什么:

我正在编写一个 API,它在成功或失败时返回 JSON,并且返回的 JSON 中有一个status变量,它让最终用户知道它在哪里 asuccessfailure.

现在,如果一个 API 期望提交一些参数,那么如果该参数是一个双精度并且提交的值是一个字符串,那么我必须返回带有statusfalse 和错误消息的JSON errorlist

默认情况下,介于两者之间的拦截器,未能将其设置String为某些Number返回Action.INPUT结果而不执行操作方法。

我尝试用注释方法,@SkipValidation但方法代码仍然没有执行,它INPUT直接从拦截器返回(我猜)。

默认情况下,我在 action 方法中将状态定义为truethen,根据条件,如果需要,我将其设置为 false,但是由于现在从未执行过该操作,因此返回的 JSON 响应的状态为 true,并且errorlist为空(因为该操作未执行,用于将错误添加到列表中)。

操作代码:

 @SkipValidation
    public String saveFund() {
          //some code which is never executed when Double variable is a string
    return SUCCESS;
}

正在使用的拦截器堆栈:

<interceptors>
    <interceptor name="nlogin" class="interceptors.AdminInterceptor"/>
    <interceptor-stack name="loginStack">
        <interceptor-ref name="nlogin"/>
        <!--<interceptor-ref name="store">-->
        <!--<param name="operationMode">AUTOMATIC</param>-->
        <!--</interceptor-ref>-->
        <interceptor-ref name="defaultStack"/>
    </interceptor-stack>
</interceptors>
<default-interceptor-ref name="loginStack"/>
4

1 回答 1

1

如果操作未执行意味着您有验证错误。在这种情况下,当 validate 方法完成(如果有)时,validation拦截器会返回结果。Action.INPUT

因此,您希望在这种情况下返回 JSON。要返回 JSON,您应该创建一个带有名称"input"和类型的结果"json"并将其添加到操作配置中。

验证完成后,您可以使用validate()方法自定义结果,输入结果将被执行,如果是 JSON 类型,则返回 JSON 响应。

于 2013-12-18T13:36:39.880 回答