有没有办法从Validator
设置bean属性?
就我而言,我有一个validator
连接到数据库并执行一些验证
验证成功后,我想在bean属性中保存从数据库接收的对象
目前我通过从验证器设置我的bean的静态属性来做到这一点
这是我的验证方法
public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {
//perform validation
if(isValidated) {
Referral ref = database.getReferral(value.toString()); //receive referral object from batabase
RegistrationBean.staticReferral = ref; // Set ref to RegistrationBean's static property
} else {
FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_FATAL, "Invalid Referral!", "Referral does not exist!");
throw new ValidatorException(msg);
}
}
这是我的RegistrationBean
@ManagedBean
@ViewScoped
public class RegistrationBean implements Serializable {
//other bean properties
private Referral referral;
public static Referral staticReferral;
public RegistrationBean() {
//default constructor
}
public Referral getReferral() {
this.staticReferral = referral;
return referral;
}
// other getters, setters and methods
}
所以我的想法是:
由于
答案 0 :(得分:3)
托管bean中的静态成员在所有实例(以及应用程序的用户)之间共享。因此,在将成员变量静态化之前至少要考虑两次。
如果使验证器成为托管bean,则可以将目标托管bean注入验证器。有关详细信息,请参阅this answer。
在给定的示例中,注入了EJB,但您可以通过@ManagedProperty
注释注入JSF托管bean