Dan*_*Dan 5 java spring spring-mvc java-ee
我有一个与Spring 3 MVC,Ajax和form:errors相关的问题.
我有一个表单,我提交给服务器,我正在使用Spring MVC.我有所有的验证,控制器等设置和工作正常.当我提交未通过验证的数据时,我会收到错误消息,并根据我的表单显示在表单上:我的jsp中的错误标记.
我的问题是......
如果我想转换为Ajax方法,我是否仍然可以利用"普通"Spring MVC应用程序的所有基础结构(即,特别是验证器和表单:错误功能)来将错误恢复到(并显示在)浏览器?我看到了如何提交Ajax请求,但是我没有看到我是如何(或者如果)仍然可以利用jsp的形式:错误功能.
有谁知道这是否可以做到,如果是的话,请指出适当的总体方向?
提前致谢.
您不能,因为像标签一样<form:errors>在服务器端进行评估,并在HTTP响应的HTML内容中嵌入错误消息/元素.由于对服务器的AJAX请求通常会将XML或JSON返回给响应(而不是HTML),然后由客户端JavaScript解析,因此Spring无法绑定到请求/表单并向其添加错误消息内容.
在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方法一样.你明白了吗?
不是,不是.该form:error标签确实当页面第一次在服务器端生成它的魔力.如果你没有重新生成页面服务器端,因为你使用了ajax,所以没有一个会运行.Errors对象本身并不是真正可以返回到客户端.您可以将它序列化为JSON我想,但是那里有很多你不需要的东西.当然,它通常只有代码而不是实际消息,并且需要消息源来查找翻译.
最重要的是,您需要手动发送错误并在返回ajax响应时自行处理在javascript中设置错误消息.
| 归档时间: |
|
| 查看次数: |
4951 次 |
| 最近记录: |