我正在使用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?任何想法都会非常感激。
感谢。
编辑添加了示例工作验证器方法源代码,添加了有关缺少相关堆栈跟踪的信息。