I am trying to validate a password field:
<s:decorate id="password" template="/layout/edit.xhtml">
<ui:define name="label">#{messages['person.password']}</ui:define>
<h:inputSecret id="passwordValue" value="#{passwordBean.newPassword}"
valueChangeListener="#{passwordBean.validateNewPassword}">
<a4j:support event="onblur" reRender="password, passwordValue"/>
</h:inputSecret>
</s:decorate>
---------------------------------------------------------
The edit.xhtml template:
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:s="http://jboss.com/products/seam/taglib">
<div class="prop">
<s:label styleClass="name #{invalid?'errors':''}">
<ui:insert name="label"/>
<s:span styleClass="required" rendered="#{required}">*</s:span>
</s:label>
<span class="value #{invalid?'errors':''}">
<s:validateAll>
<ui:insert/>
</s:validateAll>
</span>
<span class="error">
<h:graphicImage value="/img/error.gif" rendered="#{invalid}" styleClass="errors"/>
<s:message styleClass="errors"/>
</span>
</div>
</ui:composition>
---------------------------------------------------------
The passwordBean:
@Name("passwordBean")
@Scope(ScopeType.CONVERSATION)
public class PasswordBean implements Serializable {
@In private FacesMessages facesMessages;
public void validateNewPassword(ValueChangeEvent e) {
String newPass = (String) e.getNewValue();
String compId = e.getComponent().getId();
if (weakPassword(newPass)) {
facesMessages.addToControlFromResourceBundle(compId, "message.password");
return;
}
}
}
The password field error shows up upon validation, but the error message does not get displayed.