Условные обязательные поля в Richfaces

#jsf #richfaces

#jsf #richfaces

Вопрос:

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

У меня есть 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. Вы, наконец, справились с этим? У меня похожая проблема…

Ответ №1:

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

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

или

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

MAG,
Milo van der Zee