我尝试使用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.ELException:无法找到类型为:org.apache.el.ExpressionFactoryImpl
的ExpressionFactoryjava.lang.ExceptionInInitializerError
javax.el.ELException:无法找到类型为:org.apache.el.ExpressionFactoryImpl
的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缺少一些库?