我的英语不好,很抱歉。我的问题是关于 jsf 验证。当我的验证 bean 抛出 ValidatorException 时,我的托管 bean save_method 工作。但我不希望我的 save_method 工作。如果电子邮件无效,我的 save_method 不应该工作。
复合接口
<composite:attribute name="validator" required="false"
method-signature="void Action(javax.faces.context.FacesContext, javax.faces.component.UIComponent,Object)" />
像这样的复合实现
<c:if test="#{cc.getValueExpression('validator')!=null}">
<p:inputText value="#{cc.attrs.value}" id="#{cc.attrs.id}"
required="#{cc.attrs.required}" validator="#{cc.attrs.validator}"/>
验证 bean 中的验证方法。
@Override
public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {
String email = (String) value;
Pattern mask = null;
mask = Pattern.compile(EMAIL_REGEX);
Matcher matcher = mask.matcher(email);
if (!matcher.matches()) {
messageManager.warn(MessageManager.Bundles.WO, "validator.message.email");
throw new ValidatorException(new FacesMessage("hoppala"));
}
}
和我的托管 bean 保存方法。
@Override
public boolean save() {
super.save();
}