Условные Обязательные поля в Richfaces - PullRequest
2 голосов
/ 05 октября 2011

Я использую Richfaces 3.3.3 для своего приложения. Я не уверен, как добиться условной обязательной проверки в богатых лицах. Ниже мой сценарий:

У меня есть 3 текстовых поля input1, input2, input3 следующим образом:

<h:inputText id="input1" value= "#{mybean.input1}" required= "true" maxlength="350" >
  <mj:regexValidator pattern="[0-9A-Za-z% ]*" />
</h:inputText>

<h:inputText id="input2" "#{mybean.input2}"maxlength="350" ></h:inputText>

<h:inputText id="input3" "#{mybean.input3}"maxlength="350"></h:inputText>
<a4j:commandButton value="save" action="#{mybean.saveData}"/>

В приведенном выше коде «input1» является обязательным полем, принимающим только буквенно-цифровое значение. «input2» является необязательным полем, а «input3» требуется только в том случае, если пользователь вводит «input2», в противном случае «input3» также является необязательным

В настоящее время я проверяю input2 и input3 в методе saveData на компоненте поддержки (по нажатию кнопки сохранения) и выдаю сообщение об ошибке на экран.

Но следующий сценарий терпит неудачу, Если пользователь вводит специальный символ, например "####", в input1 и вводит допустимое значение в input2, но оставляет input3 пустым, я получаю только сообщение об ошибке, относящееся к input1, на экране.

Это связано с тем, что проверка правильности регулярного выражения запускается еще до достижения метода сохранения в компоненте поддержки.

Есть ли способ преодолеть этот метод. Пожалуйста, совет

1 Ответ

0 голосов
/ 11 мая 2012

Это можно исправить, выполнив проверку в методе backDend saveData () и создав оттуда сообщения. JSF будет обрабатывать их так же, как и другие проверки, но тогда у вас будет больше контроля.

FacesContext.getCurrentInstance().addMessage("info", new FacesMessage(FacesMessage.SEVERITY_INFO, message, message));

или

context.addMessage(fullFieldId, new FacesMessage(FacesMessage.SEVERITY_ERROR, message, message));

MAG, Мило ван дер Зее

...