#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