编辑:在阅读之前,请考虑这个解决方案非常有效,答案是从 2012 年 7 月开始,所以请不要因为你不喜欢它而对我投反对票。世界发生了变化,现在我们有了更好的组件和解决方案。
没有解决方案,我被迫以丑陋的方式进行验证(不推荐)。至少在我找到更好的解决方案之前它是有效的。
在返回操作的方法中,我检查两个值,如果值不同,我在上下文中添加错误消息并将 null 返回给导航处理程序。
package com.jsf.beans.user;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.component.html.HtmlInputSecret;
import org.apache.commons.lang.StringUtils;
import com.pichler.jsf.beans.base.JsfViewBean;
@ManagedBean(name = "changePassword")
@RequestScoped
public class ChangePassword extends JsfViewBean {
private HtmlInputSecret inputSecret1, inputSecret2;
/**
* @return the inputSecret1
*/
public HtmlInputSecret getInputSecret1() {
return inputSecret1;
}
/**
* @param inputSecret1
* the inputSecret1 to set
*/
public void setInputSecret1(HtmlInputSecret inputSecret1) {
this.inputSecret1 = inputSecret1;
}
/**
* @return the inputSecret2
*/
public HtmlInputSecret getInputSecret2() {
return inputSecret2;
}
/**
* @param inputSecret2
* the inputSecret2 to set
*/
public void setInputSecret2(HtmlInputSecret inputSecret2) {
this.inputSecret2 = inputSecret2;
}
private String password1, password2;
public String alterar() {
if (!StringUtils.equals(password1, password2)) {
addErrorMessage(inputSecret1.getClientId(),
"As senhas não coincidem");
addErrorMessage(inputSecret2.getClientId(),
"As senhas não coincidem");
return null;
}
return null;
}
/**
* @return the password1
*/
public String getPassword1() {
return password1;
}
/**
* @param password1
* the password1 to set
*/
public void setPassword1(String password1) {
this.password1 = password1;
}
/**
* @return the password2
*/
public String getPassword2() {
return password2;
}
/**
* @param password2
* the password2 to set
*/
public void setPassword2(String password2) {
this.password2 = password2;
}
}
*JsfViewBean 只是一个有一些常用方法的类,如“addMessages”。