Почему проверка распорок не работает на меня?

Я пытаюсь использовать проверку Struts для проверки различных полей, вводимых пользователями. Если кто-либо может помочь мне видеть то, в чем я испытываю недостаток, я был бы чрезвычайно благодарен. Вот то, что я имею:

Я поместил validation.xml и TestAction-validation.xml в WEB-INF/classes/

Вот validation.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
    "-//OpenSymphony Group//XWork Validator Config 1.0//EN"
    "http://www.opensymphony.com/xwork/xwork-validator-config-1.0.dtd">

<validators>
    <validator name="int" class="com.opensymphony.xwork2.validator.validators.IntRangeFieldValidator"/>
    <validator name="stringlength" class="com.opensymphony.xwork2.validator.validators.StringLengthFieldValidator"/>
    . . .
</validators>

Вот TestAction-validation.xml:

<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
   "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
  <field name="testInt">
    <field-validator type="int">
      <param name="min">0</param>
      <param name="max">9</param>
      <message>Number not in range</message>
    </field-validator>
  </field>
  <field name="testString">
    <field-validator type="stringlength">
      <param name="minLength">4</param>
      <message>String not long enough.</message>
    </field-validator>
  </field>
</validators>

Мой struts.xml расширяется struts-default, и у меня есть чрезвычайно простой класс действия TestAction который расширяется ActionSupport и имеет поля testInt и testString.

Из того, что я читал, это должно быть достаточно, чтобы Struts проверил вводимые значения, но этого не происходит. Что я пропускаю?

8
задан BalusC 12 September 2017 в 20:54
поделиться

2 ответа

У вас есть два варианта: проверка для каждой модели или для каждого действия. Для проверки на уровне Action вы просто создадите файл с именем {your action} -validation.xml и поместите его в тот же пакет, что и класс Action. Для проверки на уровне модели вы должны создать аналогичный файл, который принимает имя объекта модели, а затем направить файл проверки действия для проверки в соответствии с правилами в файле проверки модели.( Ссылка )

Поместите validation.xml в корень ваших исходных файлов Java (пакет по умолчанию) и поместите TestAction-validation.xml в тот же каталог, где находится ваш файл TestAction.java. Большинство IDE автоматически копируют все ресурсы в соответствующий каталог, где будет сгенерирован ваш файл класса.

Обновление:

http://struts.apache.org/2.x/docs/validation.html

Как обнаруживаются валидаторы действия

6
ответ дан 5 December 2019 в 10:02
поделиться

Здесь может быть несколько моментов.

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

2) TestAction-validation.xml должен находиться в WEB-INF/classes/[package], так что если action - com.foo.TestAction, то TestAction-validation.xml должен находиться в WEB-INF/classes/com/foo/TestAction-validation.xml

3) Попробуйте использовать имя метода, которому вы подчиняетесь в классе TestAction, в имени файла validator xml. Вы можете иметь TestAction-[method_to_be_validated]-validation.xml

Надеюсь, это поможет!

3
ответ дан 5 December 2019 в 10:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: