На странице register.xhtml у меня есть 2 компонента inputText для пароля и подтверждения пароля следующим образом:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.prime.com.tr/ui"
xmlns:f="http://java.sun.com/jsf/core">
<h:form>
<h:outputText style="font-weight: bold" value="Password: " />
<p:password feedback="true" minLength="9"
binding="#{mrBean.passwordComponent}"
id="password" value="#{mrBean.password}"/>
<p:message for="password" id="passwordMsg" />
<h:outputText style="font-weight: bold" value="Confirm password: " />
<p:password feedback="false" minLength="9"
id="confirmPassword" value="#{mrBean.confirmPassword}"
validator="#{mrBean.validateConfirmPassword}>
<f:attribute name="oriPassword" value="#{mrBean.passwordComponent.submittedValue}"/>
<p:ajax process="password confirmPassword" update="confirmPasswordMsg" />
</p:password>
<p:message for="confirmPassword" id="confirmPasswordMsg" />
</h:form>
</html>
А это мой mrBean:
@ManagedBean
@RequestScoped
public class MrBean {
private String password;
private String confirmPassword;
private UIInput passwordComponent;
public void validateConfirmPassword(FacesContext context, UIComponent toValidate,
Object value) throws ValidatorException {
String passwordStr = (String) toValidate.getAttributes().get("oriPassword");
String confirmPasswordStr = (String) value;
if (!confirmPasswordStr.equals(passwordStr)) {
FacesMessage message = new FacesMessage("The 2 passwords do not match.");
throw new ValidatorException(message);
}
}
}
На другой странице у меня также есть аналогичный компонент с аналогичной функцией проверки для электронной почты и подтверждения электронной почты, и он отлично работает. Однако я понятия не имею, почему это не может работать здесь. passwordStr всегда null, хотя я уже ввел пароль.
Я был бы очень признателен, если бы кто-нибудь мог показать мне, что я сделал неправильно здесь.
С уважением, Джеймс Тран
validateConfirmPassword, а неvalidateConfirmEmail. Вы разместили правильный код? - person Vineet Reynolds   schedule 03.12.2011