以命令方式执行JSF验证的常用方法是将验证器标记添加到JSF并具有相应的Validator
类,如下所示:
查看:
<h:outputLabel for="email" value="*Enter Email: " title="Primary Email"/>
<h:inputText id="email" value="#{personView.per.email}" required="true" requiredMessage="email is required"
title="Primary Email" tabindex="3">
<f:validator validatorId="emailValidator" />
</h:inputText>
<h:message id="m2a" for="email" style="color:red"/> <p></p>
Validator
:
public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {
log("Validating submitted email -- " + value.toString());
matcher = pattern.matcher(value.toString());
if (!matcher.matches()) {
FacesMessage msg =
new FacesMessage(" E-mail validation failed.",
"Please provide E-mail address in this format: abcd@abc.com");
msg.setSeverity(FacesMessage.SEVERITY_ERROR);
throw new ValidatorException(msg);
}
}
现在,验证将由JSF触发。我想更改该部分,并希望通过Bean Validation约束从另一个Controller触发验证。这意味着,我想删除以下部分: -
<f:validator validatorId="emailValidator" />
并希望通过Bean Validation约束从另一个控制器触发此验证。 请注意,我无法直接在实体上添加约束,因为实体是生成的文件。我想在控制器本身进行验证,以便我可以在UI上显示错误消息。 我该怎么办呢?
对一些示例代码的解释将不胜感激。