时间:2012-05-13 10:29:20

标签: spring hibernate spring-mvc

从早上起我就陷入了问题。 在一个地方同样的事情正在发挥作用,第二个地方不起作用  没有显示错误。 我查了很多次这个问题已被问过,我提到了所有的问题和解决方案,但问题仍然是相同的。我在我的控制器中使用的代码。

@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;

并且相同的代码正在其他地方工作 请建议几乎我尝试过所有组合。

3 个答案:

答案 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。这些只是猜测,因为你告诉其他页面正在工作。