java - 无法让 JSR303 注释与 Tomcat 7 一起使用

标签 java jsf-2 bean-validation tomcat7

经过几个小时的 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/

相关文章:

jsf - 在 f :facet - does it work as designed? 中找到一个或多个组件

jsf-2 - PrimeFaces 中不同组件的不同 Ajax 状态

java - Hibernate 查询上的链接 setParameter

java - 如何使用 datastax java 驱动程序有效地使用批量写入 cassandra?

java - Wikipedia API - 获取搜索结果的链接

jsf-2 - 如何将已通过身份验证的用户从登录页面重定向到主页

java - 无法使用吗啡(mongodb)删除实体

kotlin - 使用 NotBlank 注释在 Kotlin 代码中不起作用

spring - javax验证大小修剪空白

java - Android/Java 问题。这两个决策树有何不同?