如何将JSF Validator迁移到Bean验证?

时间:2015-03-04 11:21:39

标签: jsf-2 bean-validation hibernate-validator

以命令方式执行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上显示错误消息。 我该怎么办呢?

对一些示例代码的解释将不胜感激。

0 个答案:

没有答案