用法:JSF 2.3.2 Mojarra
在将ajax添加到我的jsf时遇到了这种情况:
在刷新表单时无法刷新: h:message id =“ 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>
和 validators.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” < / em>),然后通过结束表单的“提交”按钮刷新:
<h:commandButton value="Submit" action="#{userDetails.submit}"/>
</h:form>
如果您考虑不同的验证方式->在EmailAddress输入处,我使用了自己的类注释( EmailAddressValidator实现了ConstraintValidator ),该注释通过@ValidEmailAddress在表单中使用的bean上进行了验证-它呈现了电子邮件验证消息正确,但是在这里我想用另一种方式验证PhoneNumber。