没有获得JSR303注释与Tomcat 7一起使用

Dav*_*vid 0 java bean-validation jsf-2 tomcat7

经过几个小时的谷歌和一些教程,我被打败了...事实并非我得到错误可以给我提示问题是什么,完全没有它们让我疯了!

以下代码有效,只是不应该!检查输入不是null或小于3个字符长的注释永远不会运行.在部署项目或写入名称变量时,它们也不会发出任何错误.

public class testBean
{
    @NotNull
    @Size(min=3)
    private String name;
}

public void test()
{
    System.out.println(name);
}
Run Code Online (Sandbox Code Playgroud)

输入表格:

<h:form>
        <h:inputText value="#{testBean.name}" />
    <h:commandButton value="Send" action="#{testBean.test()}" />
</h:form>
Run Code Online (Sandbox Code Playgroud)

我的猜测是,这是导致问题的tomcat,虽然我很确定我已经导入了所有必要的库.对于我正在使用的IDE,Eclipse也是如此.

Bal*_*usC 5

至于lib​​s,我在"WEB-INF/lib"文件夹和"apache-tomcat-7/lib"文件夹中都包含了"validation-api-1.0.0.GA.jar".

您只安装了API,而不是实现.API是一个抽象合同,因此您可以在代码中声明/使用它,并可以自由选择实现.实现包含具体代码并完成实际工作.您还需要安装impl.JSR-303参考实现是Hibernate Validator.下载详细信息在这里.目前最新的决赛是4.1.0.它包含的hibernate-validator-4.1.0.Final.jar文件是真正的实现.放下它Webapp/WEB-INF/lib.它不一定需要Tomcat7/lib,我也会从那里删除API以防止将来的类路径冲突.