Spring-MVC:如何在使用AbstractCommandController时显示错误?

时间:2011-02-27 21:09:37

标签: java spring spring-mvc java-ee

我有ajax请求进入我的控制器,我的验证工作得很好。在控制器中,如果发生故障,我会调用失败的jsp页面。唯一的问题是我不知道如何在failure.jsp页面上向用户输出错误。我显然无法访问spring的表单标签。在这种情况下你应该怎么做?

编辑:我真正想知道的是当我使用AbstractCommandController时如何访问JSP页面上的绑定错误。

2 个答案:

答案 0 :(得分:2)

我过去所做的是使用HTTP标头将消息发送回AJAX请求者(XMLHTTPRequest对象)。您不会以这种方式获得完整的绑定和验证支持,但这是传递消息的简单方法。

将为您提供Spring绑定和验证的全部功能的另一个选项如下。我假设您通过AJAX提交表单。您可以执行标准弹簧绑定和验证,如果出现错误,请发送回来并将问题输入旁边的异常消息替换为表单。这样,您可以充分利用Spring绑定和验证的功能,同时获得所需的AJAX优势。这需要您将表单分成单独的JSP页面,因此您可以在AJAX提交和错误时返回该表单。

回应评论

  

我的问题是如何访问   如果我正在使用,则来自JSP的绑定错误   一个AbstractCommandController。阿贾克斯   并不是真的那么重要   方程。我只是不想用   formController,因为它没有   感。

你可以在模型中设置一个变量,如下所示:

ModelAndView.addObject(this.getCommandName(), errors)

这将在AbstractCommandController的

中完成
protected abstract ModelAndView handle(
        HttpServletRequest request,
        HttpServletResponse response,
        Object command,
        BindException errors)
    throws Exception

方法。确保model属性的名称是命令的名称(在setCommandName方法中设置)。

这是未经测试的内存。

答案 1 :(得分:-1)

您可以检查BindException对象是否有错误(以及捕获和处理异常),并在Ajax响应中返回有关它们的信息。如果您使用的是JSON,则可以将错误信息列表与“错误”键配对。然后,前端需要检查并显示这些错误。