如何通过使用MultiActionController在表单中获取错误消息?

时间:2009-09-23 06:48:35

标签: java spring spring-mvc

我有一张表格:

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

但它不起作用。当再次显示表单时(失败后),将显示命令属性,但不显示错误消息。

ANSWER

而不是

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

我必须致电

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

注意 addAllObjects 。现在它工作正常!

1 个答案:

答案 0 :(得分:1)

嗯......现在已经太晚了。

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

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