从早上起我就陷入了问题。 在一个地方同样的事情正在发挥作用,第二个地方不起作用 没有显示错误。 我查了很多次这个问题已被问过,我提到了所有的问题和解决方案,但问题仍然是相同的。我在我的控制器中使用的代码。
@RequestMapping(method = RequestMethod.POST)
public String findRide(@ModelAttribute("postAd") PostAdRR user,ModelMap model,@Valid PostAdRR postAd,
BindingResult result,HttpSession session,HttpServletRequest request) {
if (result.hasErrors()) {
System.out.println(result.toString());
return "postAd";
}
即使它进入错误块并打印SOP行。
但它没有在表格上显示。
<form:form method="POST" commandName="postAd" enctype="multipart/form-data" >
<form:errors path="contactName" cssClass="Err"/>
我的域类( PostAdRR )代码是
@NotEmpty(message = "You must provide Title.")
private String title =null;
并且相同的代码正在其他地方工作 请建议几乎我尝试过所有组合。
答案 0 :(得分:1)
我认为问题出在你的控制器功能签名中。 您正在验证其他对象,而您的模型属性是另一个对象。这不是验证对象并在表单上显示错误的正确方法。
您的方法签名应如下所示。
public String findRide(@Valid @ModelAttribute("postAd") PostAdRR user,ModelMap model, BindingResult result,HttpSession session,HttpServletRequest request)
现在您将相同的对象绑定到您正在验证的视图。
希望对你有所帮助。
干杯。
答案 1 :(得分:0)
我有点想知道为什么你的例子中的名字不匹配。
一方面是:contactName
<form:errors path="contactName" cssClass="Err"/>
另一方面是:title
愿这就是原因。
如果这不起作用,请尝试<form:errors path="*" cssClass="Err"/>
(在from中)以显示所有错误消息。该测试的结果有望帮助您确定问题是在视图中还是在控件中。
答案 2 :(得分:0)
您可以尝试使用@NotNull
注释@NotEmpty
。也可以在模型属性之前在控制器中尝试@Valid
。这些只是猜测,因为你告诉其他页面正在工作。