Проверка некоторых методов Action в Struts2 - PullRequest
1 голос
/ 14 июля 2010

У меня есть класс Action с действиями CRUD внутри, и я переопределил метод validate (), заданный классом ActionSupport.

Вопрос в том, как запустить проверку только для обновления и создать действия?

Одно из возможных решений - перенести создание и обновление на новый класс Action, но я хотел бы знать, есть ли другое решение для этого.

Спасибо! Roberto

Ответы [ 4 ]

3 голосов
/ 21 февраля 2014

Вы также можете попробовать аннотацию @SkipValidation с методом, который вы не хотите проверять:

@SkipValidation
public String yourMethod(){
...
return SUCCESS;
}
3 голосов
/ 14 июля 2010

Я считаю, что есть два варианта: преобразовать проверяемые методы в новое действие (как вы сказали) или переключиться на программную проверку (вместо декларативной). По сути, вызывайте myvalidate() изнутри ваших методов обновления / создания и возвращайте INPUT, если есть ошибки.

0 голосов
/ 22 марта 2011

Если вы используете Struts defaultStack перехватчиков, вы уже исключаете проверку из методов, называемых ввод, возврат, отмена или просмотр.

Я рекомендую создать свой собственный стек перехватчиков (по умолчанию для всех действий, поэтому вам не нужно переопределять эти вещи для каждого действия). Основывайте его на примере стека из Struts-default.xml, который вам подходит, а затем отредактируйте перехватчик-ref для проверки и рабочего процесса (они тесно связаны - перехватчик рабочего процесса пропускает действие и возвращает «ввод») действие при наличии ошибок валидации - поэтому исключения метода должны совпадать).

В моем текущем проекте я добавил исключения для * Form и * Input, так что проверка запускается по умолчанию, но этого легко избежать - просто убедитесь, что вызываемый вами метод действия заканчивается в Form или Input.

Как правило, лучше запускать проверку по умолчанию (и определять исключения), потому что если вы допустите ошибку и проверка начнется, когда вы ее не захотите, вы сразу узнаете (ваше действие не будет выполнено из-за ошибок) .. в то время как если вы допустили ошибку и проверка не запустилась, это тихая ошибка.

0 голосов
/ 24 сентября 2010

Вы можете исключить другие методы, поместив исключение в файл конфигурации.

<interceptor-ref name="validation">
  <param name="validateAnnotatedMethodOnly">true</param>                
  <param name="excludeMethods">input,back,cancel,browse</param>
</interceptor-ref>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...