Struts и ValidatorForm -> он работает с переменным количеством элементов формы? - PullRequest
2 голосов
/ 09 февраля 2011

HI,

У меня есть форма, в которой я генерирую строки элементов ввода (используя JavaScript), чтобы пользователи могли вводить свои данные.Каждая строка содержит данные о конкретной ячейке, которую вводит пользователь (например, высота, ширина, длина и т. Д.).Я успешно получил эту форму для работы, и я могу читать из ActionForm в / из объекта ArrayList.

Я хотел бы проверить эти записи, чтобы заранее отловить недействительные записи.(Я на 1.3.10) Я не могу найти документацию по использованию ValidatorForm с динамическим числом элементов формы.То есть я никогда не знаю, сколько строк блоков будет введено, и мне интересно, успешно ли кто-нибудь использовал Validator для проверки элементов динамической формы?

Возможно ли это вообще?Или я ушел в отставку, чтобы реализовать метод .validate ()?

Можно ли использовать Validator для некоторых элементов и оставить остальное для метода .validate ()?Кто-нибудь сделал это, и если да, то какие подводные камни?

Буду признателен за ваши комментарии или даже указатель на ресурс, где я могу прочитать.

1 Ответ

2 голосов
/ 09 февраля 2011

Вы можете сделать это, выполнив следующие действия.
1. Определите класс (простой POJO) скажем DimensionBean; который содержит значение элементов ввода одной строки (таких как высота, ширина, длина и т. д.).
2. В компоненте Form (дочернем по отношению к ValidatorForm) определите массив или список DimensionBean. Имя массива - arrDimensionBeans.
3. В вашем validation.xml вы можете определить его следующим образом

<field property="height" indexedListProperty="arrDimensionBeans" depends="validwhen">
      <arg0 key="yourform.height.label"/>
        <var>
          <var-name>test</var-name>
          <var-value>((arrDimensionBeans[].width == null) or (*this* != null))</var-value>
        </var>
      </field>

Это будет проверять высоту, только если ширина равна нулю или высота не равна нулю. Вы можете изменить значение переменной согласно вашему требованию. Надеюсь, это поможет вам решить вашу проблему.

...