Использование одного и того же сообщения для некоторых элементов на странице Facelets
Сейчас я использую JSF 2.0 и Facelets для создания некоторых веб-страниц. У меня есть страница входа, которая содержит другие вещи, кроме панели входа.
Дело в том, что я хочу отобразить одно и то же сообщение для 2 полей ввода панели (Имя пользователя и пароль) в верхней части панели, но только 1 сообщение для обоих. когда я использую <h:messages>
код отображается правильно, но вместе со всеми другими сообщениями других компонентов также. Так как <h:messages>
является глобальным для всего лица.
Я пытался использовать два <h:message for="">
и добавление одного и того же сообщения для обоих полей ввода, но затем сообщение отображается дважды.
сообщение будет "имя пользователя и / или пароль неверен".
Как я могу сделать это, отображая сообщение, если какой-либо из них является неправильным?
1 ответ
Если вы добавляете эти сообщения вручную в компонент поддержки через API FacesContext.addMessage (..), почему вы не можете добавить их только для поля имени пользователя или для всей панели входа в систему?
Если вы используете для этого пользовательские валидаторы, вы можете воспользоваться методом UIInput.isValid() и попробовать следующее:
<h:message for="password" rendered="#{username.valid}"/>
<h:message for="username"/>
<h:inputText id="username" binding="#{username}"/>
<h:inputText id="password" binding="#{password}"/>
или даже
<h:outputText value="msg['genericErrorMessage']" rendered="#{!username.valid || !password.valid}"/>
С другой стороны, неясно, почему вы должны применять одну и ту же проверку дважды для полей имени пользователя и пароля.