Позвольте мне сначала объяснить, что я делаю:
Я пишу API, который возвращает JSON в случае успеха или неудачи, и в возвращаемом JSON есть переменная status
, которая позволяет конечному пользователю узнать, где находится success
или failure
.
Теперь, если API ожидает отправки некоторых параметров, то если этот параметр является двойным, а отправленное значение является строкой, тогда я должен вернуть JSON с status
false и сообщением об ошибке в errorlist
.
По умолчанию перехватчики между ними, если не установить String
на какое-то Number
, возвращают результат Action.INPUT
без выполнения метода действия.
Я попытался аннотировать метод с помощью @SkipValidation
, но код метода все равно не выполняется, и он возвращает INPUT
сразу из перехватчика (я думаю).
Я по умолчанию определил статус как true
, затем в методе действия, в зависимости от условий, я устанавливаю его 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"/>