import javax.faces.component.UIComponent; import javax.faces.FacesException; import javax.faces.application.FacesMessage; import org.primefaces.expression.SearchExpressionFacade; import org.primefaces.util.MessageFactory; public final static String STYLE_CLASS = "ui-inputfield ui-password ui-widget ui-state-default ui-corner-all"; public final static String INVALID_MATCH_KEY = "primefaces.password.INVALID_MATCH"; @Override protected void validateValue(FacesContext context, Object value) { super.validateValue(context, value); String match = this.getMatch(); Object submittedValue = this.getSubmittedValue(); if(isValid() && match != null) { Password matchWith = (Password) SearchExpressionFacade.resolveComponent(context, this, match); if(submittedValue != null && !submittedValue.equals(matchWith.getSubmittedValue())) { this.setValid(false); matchWith.setValid(false); String validatorMessage = getValidatorMessage(); FacesMessage msg = null; if(validatorMessage != null) { msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, validatorMessage, validatorMessage); } else { Object[] params = new Object[2]; params[0] = MessageFactory.getLabel(context, this); params[1] = MessageFactory.getLabel(context, matchWith); msg = MessageFactory.getMessage(Password.INVALID_MATCH_KEY, FacesMessage.SEVERITY_ERROR, params); } context.addMessage(getClientId(context), msg); } } }