JSF2.2带注释的验证不起作用

时间:2014-04-22 10:16:20

标签: jsf java-ee bean-validation jsf-2.2 hibernate-validator

我正在使用Tomcat 7,JSF 2.2.6(Mojarra),Hibernate Validator 4.3.1开发一个应用程序,并且遇到了这里显示的文档错误:https://java.net/jira/browse/JAVASERVERFACES-3183

我已经使用此答案中给出的另一个问题暂时修补了这个问题:https://stackoverflow.com/a/21700488/1089995,直到公开发布2.2.7为止。

然而,当我尝试在字段上使用注释时,例如@ NotNull,@ Size等,这些都被忽略了 - 这里有没有相关的堆栈跟踪没有错误发生,在验证阶段简单地忽略注释。

page.xhtml

<input type="text" placeholder="e.g. Joe Bloggs" jsf:id="txtAdminName" jsf:validator="#{bean.validateAdminName}" jsf:value="#{bean.model.adminName}"/>

Model.java

//model bean with bean validation, which is not applied to the field.
@Size(min = 3, max = 50, message = "Please enter between 3 and 50 characters.")
private String adminName;

Bean.java

//the model bean with Bean Validation, as shown below.
private Model model;

//JSF Validator method, works fine
public void validateAdminName(FacesContext context, UIComponent component, Object convertedValue) {
  String adminName = convertedValue.toString();

  if(adminName.matches(".*[0-9].*")) {
    //not valid
    throw new ValidatorException(new FacesMessage("Please enter a valid name."));
  }
}

这是一个孤立的问题,还是临时修复根本不允许使用@Annotations?任何想法都会非常感激。

感谢。

编辑添加了示例工作验证器方法源代码,添加了有关缺少相关堆栈跟踪的信息。

0 个答案:

没有答案