我怎样才能在窗体中获得错误消息:通过使用MultiActionController错误标记?

问题描述:

我有一个表格:我怎样才能在窗体中获得错误消息:通过使用MultiActionController错误标记?

<form:form commandName="command" method="post"> 
    <form:errors path="property"/> 
    // some fields 
</form:form> 

而一个MultiActionController的

Command command = new Command(); 
ServletRequestDataBinder binder = createBinder(request, command); 
binder.bind(request); 

for (Validator validator: getValidators()) 
    if(validator.supports(command.getClass())) 
     validator.validate(command, binder.getBindingResult()); 

if(binder.getBindingResult().hasErrors()) 
    // What to put here in order to show error message in <form:errors path="property"/> 

我用:

return new ModelAndView() 
        .addObject(binder.getBindingResult().getModel()) 
        .addObject("command", command); 

但它不工作。当窗体再次显示(失败后)时,会显示命令属性,但错误消息不会显示。的

return new ModelAndView() 
        .addObject(binder.getBindingResult().getModel()) 
        .addObject("command", command); 

ANSWER

,而不是我要叫

return new ModelAndView() 
        .addAllObjects(binder.getBindingResult().getModel()); 

通知addAllObjects。现在它工作正常!

呃......现在已经太迟了。

binder.getBindingResult()BindingResult的一个实例,它是Errors的一个子类。您的bind()方法调用和您的验证器产生的错误已被添加到该BindingResult实例中。

如果其中一些碰巧与property路径关联,您将在<form:errors>的输出中看到它们,否则您不会。当然,你可以遍历它们并重新将它们添加回有问题的路径,但是重点是什么?

+0

嗨Chss,那么怎么做才能显示窗体:错误 – 2009-09-23 07:07:30

+0

小心是一个MultiActionController – 2009-09-23 07:08:34

+0

Chss,当我调用binder.bind验证器不会被调用。我在里面使用了一个记录器。当我呼叫验证器记录器打印输出。 – 2009-09-23 07:11:01