我有ajax请求进入我的控制器,我的验证工作得很好。在控制器中,如果发生故障,我会调用失败的jsp页面。唯一的问题是我不知道如何在failure.jsp页面上向用户输出错误。我显然无法访问spring的表单标签。在这种情况下你应该怎么做?
编辑:我真正想知道的是当我使用AbstractCommandController时如何访问JSP页面上的绑定错误。
答案 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,则可以将错误信息列表与“错误”键配对。然后,前端需要检查并显示这些错误。