带有注释的Spring MVC验证表单

时间:2014-02-26 19:41:31

标签: java spring tomcat spring-mvc

我尝试使用https://spring.io/guides/gs/validating-form-input/执行验证,并添加了@NotNull, @Size(min = 5, max = 40)等注释。当我发送正确的值时,一切都很好,但是当我首先发送错误的值时,我从Apache Tomcat / 7.0.47中得到了这个错误:

  

HTTP状态500 - 处理程序处理失败;嵌套异常是java.lang.ExceptionInInitializerError

     

输入例外报告

     

消息处理程序处理失败;嵌套异常是java.lang.ExceptionInInitializerError   description服务器遇到内部错误,导致无法完成此请求。

     

exception org.springframework.web.util.NestedServletException:处理程序处理失败;嵌套异常是java.lang.ExceptionInInitializerError

     

javax.el.E​​LException:无法找到类型为:org.apache.el.E​​xpressionFactoryImpl

的ExpressionFactory      

java.lang.ExceptionInInitializerError

     

javax.el.E​​LException:无法找到类型为:org.apache.el.E​​xpressionFactoryImpl

的ExpressionFactory

当我刷新网站并尝试再次发送错误的值时,我得到一个不同的错误:

  

HTTP状态500 - 处理程序处理失败;嵌套异常是java.lang.NoClassDefFoundError:无法初始化类org.hibernate.validator.internal.engine.messageinterpolation.InterpolationTerm

     

输入例外报告

     

消息处理程序处理失败;嵌套异常是java.lang.NoClassDefFoundError:无法初始化类org.hibernate.validator.internal.engine.messageinterpolation.InterpolationTerm

     

说明服务器遇到内部错误,导致无法完成此请求。

     

exception org.springframework.web.util.NestedServletException:处理程序处理失败;嵌套异常是java.lang.NoClassDefFoundError:无法初始化类org.hibernate.validator.internal.engine.messageinterpolation.InterpolationTerm

     

java.lang.NoClassDefFoundError:无法初始化类org.hibernate.validator.internal.engine.messageinterpolation.InterpolationTerm

这是我的控制器中的操作:

@RequestMapping(value = "testform", method=RequestMethod.GET)
public String testForm(Foo foo){
    return "test/testform";
}

@RequestMapping(value="testform", method=RequestMethod.POST)
public String checkPersonInfo(@Valid Foo foo, BindingResult bindingResult) {
    if (bindingResult.hasErrors()) {
        return "test/testform";
    }
    return "redirect:/admin/venue/testform";
}

并查看:

<form action="#" th:action="@{/admin/venue/testform}" th:object="${foo}" method="post">
<table>
    <tr>
        <td>Name:</td>
        <td><input type="text" th:field="*{name}" /></td>
        <!--<td th:if="${#fields.hasErrors('name')}" th:errors="*{name}">Name Error</td>-->
    </tr>
    <tr>
        <td><button type="submit">Submit</button></td>
    </tr>
</table>

有任何想法如何解决这个问题?也许Tomcat缺少一些库?

0 个答案:

没有答案