[英]Not getting JSR303 annotations to work with Tomcat 7
经过几个小时的Google培训和一些教程后,我被击败了……这不是我遇到错误可以提示我问题所在的事实,完全是因为缺少错误让我发疯了!
以下代码有效,但并非应有! 用于检查输入不为null或小于3个字符的注释永远不会运行。 在部署项目或写入名称变量时,它们也不会给出任何类型的错误。
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)也是如此。
至于库,我在“ 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以防止将来发生类路径冲突。
我遇到了同样的问题,在我的情况下,使用hibernate-validator-4.2.0.Final.jar搜索了一段时间,我缺少slf4j-api-1.6.4.jar。 问题是休眠验证器不会崩溃,但不会告诉它不起作用....
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.