использование: JSF 2.3.2 Мохарра
при добавлении ajax в мой jsf я встретил такой случай:
невозможно обновить: h: идентификатор сообщения = "phoneNumber-msg" во время выполнения формы
<h:messages id="validation-messages" styleClass="validation-messages"/>
<h:form>
<h:outputLabel for="phoneNumber">Phone number</h:outputLabel>
<h:inputText id="phoneNumber" value="#{bean.phoneNumber}">
<f:validator validatorId="validators.PhoneNumber"/>
<f:ajax event="blur" execute="@this" render="phoneNumber-msg"/>
</h:inputText>
<h:message id="phoneNumber-msg" for="phoneNumber"/>
[...]
<h:commandButton value="Submit" action="#{userDetails.submit}"/>
</h:form>
и валидаторы. PhoneNumber является @FacesValidator:
@FacesValidator("validators.PhoneNumber")
public class PhoneNumberValidator implements javax.faces.validator.Validator {
@Override
public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException { ... }
}
ДОПОЛНИТЕЛЬНО
Проверка работает правильно (сообщение от validators.PhoneNumber произошло в обоих случаях: id = "validation-messages" и id = "phoneNumber-msg" ) при обновлении кнопкой «Отправить», которая завершает форму:
<h:commandButton value="Submit" action="#{userDetails.submit}"/>
</h:form>
Если вы думаете о другом способе проверки -> при вводе EmailAddress я использовал свою собственную аннотацию класса ( EmailAddressValidator реализует ConstraintValidator ), который проверяется с помощью @ValidEmailAddress для bean-компонента, используемого в форме - он отображает проверку электронной почты сообщение правильно, но здесь я хотел бы проверить PhoneNumber по-другому.
Можно ли отобразить id = "phoneNumber-msg" (что означает выполнение validators.PhoneNumber во время выполнения формы?