我怎样才能在窗体中获得错误消息:通过使用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>
的输出中看到它们,否则您不会。当然,你可以遍历它们并重新将它们添加回有问题的路径,但是重点是什么?
嗨Chss,那么怎么做才能显示窗体:错误 – 2009-09-23 07:07:30
小心是一个MultiActionController – 2009-09-23 07:08:34
Chss,当我调用binder.bind验证器不会被调用。我在里面使用了一个记录器。当我呼叫验证器记录器打印输出。 – 2009-09-23 07:11:01