Struts2 условная проверка XML - PullRequest
       21

Struts2 условная проверка XML

1 голос
/ 29 декабря 2010

У меня есть то, что я считаю общей проблемой, но целый день поиска в Google ничего полезного не принес.

У меня есть форма с флажком и текстовым полем. Я хотел бы сделать проверку регулярного выражения текстового поля, но только если флажок установлен. Проверка регулярных выражений в настоящее время работает для других безусловных полей, но я не могу на всю жизнь выяснить, существует ли синтаксис, который допускает это в файле action-validation.xml. то есть. У меня есть что-то вроде ниже для других полей. Что мне нужно, так это способ сделать это условно оцененным, только если установлен флажок.

<validators>
 <field name="sn">
  <field-validator type="regex" >
   <param name="expression">
    [0-9]{12} 
                   </param>
   <message>Serial number format is invalid. Please try again</message>
  </field-validator>
 </field>
</validators>

У кого-нибудь есть пример кода, как это сделать?

Любая помощь очень ценится.

Ответы [ 2 ]

1 голос
/ 29 декабря 2010

Для Struts 1 было правило проверки под названием «validwhen», которое можно использовать для выполнения сложных проверок , но для Struts 2, насколько я знаю, такой проверки нет.

Для Struts 2 вы можете использовать Валидатор выражений , в котором вы можете указать выражение OGNL для использования, поэтому я думаю, вы можете попробовать что-то вроде этого:

<validator type="expression">
    <param name="expression">checkboxField eq "selected" and inputText eq "bla"</param>
    <message>....</message>
</validator>

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

Кроме того, если это не сработает, вы всегда можете написать свой собственный пользовательский валидатор .

0 голосов
/ 30 декабря 2010

Валидаторы expression и fieldexpression принимают выражение OGNL.Оценка к истинным пропускам ложных сбоев.Вы можете использовать их довольно легко для этого требования.

Лично я бы просто использовал встроенные валидаторы через XML, как вы делаете, а затем реализовал бы любую собственную логику валидации в методе validate () (или methodname-validate() метод).Просто предпочтения, на самом деле нет веских причин.

...