Spring MVC表单:使用Ajax的错误

Dan*_*Dan 5 java spring spring-mvc java-ee

我有一个与Spring 3 MVC,Ajax和form:errors相关的问题.

我有一个表单,我提交给服务器,我正在使用Spring MVC.我有所有的验证,控制器等设置和工作正常.当我提交未通过验证的数据时,我会收到错误消息,并根据我的表单显示在表单上:我的jsp中的错误标记.

我的问题是......

如果我想转换为Ajax方法,我是否仍然可以利用"普通"Spring MVC应用程序的所有基础结构(即,特别是验证器和表单:错误功能)来将错误恢复到(并显示在)浏览器?我看到了如何提交Ajax请求,但是我没有看到我是如何(或者如果)仍然可以利用jsp的形式:错误功能.

有谁知道这是否可以做到,如果是的话,请指出适当的总体方向?

提前致谢.

mat*_*t b 6

您不能,因为像标签一样<form:errors>在服务器端进行评估,并在HTTP响应的HTML内容中嵌入错误消息/元素.由于对服务器的AJAX请求通常会将XML或JSON返回给响应(而不是HTML),然后由客户端JavaScript解析,因此Spring无法绑定到请求/表单并向其添加错误消息内容.


sem*_*nte 6

在Spring中提交表单时,我使用了相当多的AJAX.基本上我所做的是我创建了一个form.jsp文件然后从AJAX调用返回.由于AJAX将返回包含所有表单标签的整个表单,因此我获得了服务器端验证的全部好处.

因此,如果我有一个包含表单的页面,我可以,例如,有一个div作为表单容器

<div id="form-container">
    <form id="myform">
        Normal form here ...
    </form>
</div>
Run Code Online (Sandbox Code Playgroud)

当我提交表单时,我可以使用jQuery加载form.jsp,例如,

$('#myform').submit(function() {
    $('#form-container').load('ajax/somehandler');
});
Run Code Online (Sandbox Code Playgroud)

因此,您所要做的就是从控制器返回form.jsp以及所有正常绑定,就像使用非AJAX方法一样.你明白了吗?


Aff*_*ffe 5

不是,不是.该form:error标签确实当页面第一次在服务器端生成它的魔力.如果你没有重新生成页面服务器端,因为你使用了ajax,所以没有一个会运行.Errors对象本身并不是真正可以返回到客户端.您可以将它序列化为JSON我想,但是那里有很多你不需要的东西.当然,它通常只有代码而不是实际消息,并且需要消息源来查找翻译.

最重要的是,您需要手动发送错误并在返回ajax响应时自行处理在javascript中设置错误消息.