我有一个显示页面的显示页面处理程序。此方法不适用于表单提交,只是显示页面。
我的问题是,即使在Display上,也会出现一些全局错误消息。由于显示错误的唯一方法是将它们添加到BindingResult,我在我的Display方法中添加了一个Model / BindingResult参数对:
public ModelAndView display(final HttpServletRequest request,
@ModelAttribute("model") Model model,
BindingResult bindingResult) {
然后,让我说我在BindingResult中添加了一个错误,
bindingResult.addError(new ObjectError("", "message");
但这不起作用 - 显示的JSP没有我的信息。这种方法适用于保存,但它不在显示屏上,可能是因为我没有提交任何表格,这就是为什么我没有BindingResult。
如何在不提交表单的方法中显示一般错误?为什么BindingResult在这个Display方法中不起作用?
答案 0 :(得分:1)
正如您所注意到的,遗憾的是BindingResult
参数仅在绑定期间由框架填充 - 即在您的命令对象填充请求参数时。
这有点像kludge,但您可以通过使用预期的密钥显式添加参数来模拟向模型添加BindingResult
参数的框架:
public ModelAndView display(MyModel model, BindingResult errors) {
errors.addError(new ObjectError("", "message"));
return new ModelAndView("myViewName", new ModelMap()
.addAttribute("myModelKey", model)
.addAttribute(BindingResult.MODEL_KEY_PREFIX + "myModelKey", errors));
}
Spring的<form:/>
taglib现在会处理你添加的错误,就像它们在绑定时发生的一样。
请注意,现在方法签名中的参数永远不会被框架填充(因为这是一个仅显示控制器操作),所以在方法中定义它们可能更有意义。
答案 1 :(得分:0)
您可能需要使用JavaScript来显示错误