经过几个小时的 Google 搜索和几个教程后,我被击败了...... 事实并不是我收到的错误可以给我提示问题是什么,而是完全没有错误让我发疯!
下面的代码可以工作,只是不正常!用于检查输入不为空或长度小于 3 个字符的注释永远不会运行。当部署项目或写入 name 变量时,它们也不会给出任何类型的错误。
public class testBean
{
@NotNull
@Size(min=3)
private String name;
}
public void test()
{
System.out.println(name);
}
以及输入形式:
<h:form>
<h:inputText value="#{testBean.name}" />
<h:commandButton value="Send" action="#{testBean.test()}" />
</h:form>
我的猜测是 tomcat 导致了问题,尽管我相当确定我已经导入了所有必要的库。我正在使用的 IDE Eclipse 也是如此。
最佳答案
As for the libs, I've inluded the "validation-api-1.0.0.GA.jar" both in the "WEB-INF/lib" folder and also the "apache-tomcat-7/lib" folder.
您仅安装了 API,未安装实现。 API 是一个抽象契约,因此您可以在代码中声明/使用它,并可以自由选择实现。实现包含具体代码并完成实际工作。您还需要安装 impl。 JSR-303 引用实现是 Hibernate Validator 。下载详情为here 。目前最新 final 为4.1.0 。它包含 hibernate-validator-4.1.0.Final.jar 文件,这是真正的实现。将其放入 Webapp/WEB-INF/lib
中。它不一定需要位于 Tomcat7/lib
中,我也会从那里删除 API 以防止将来的类路径冲突。
关于java - 无法让 JSR303 注释与 Tomcat 7 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5731773/