我有一个与Spring3MVC、Ajax和form相关的问题:错误。
我有一个提交给服务器的表单,我使用的是Spring MVC。我有所有的验证,控制器等设置和工作正常。当我提交未通过验证的数据时,我收到返回的错误消息,并按照我的表单: jsp中的错误标记显示在表单上。
我的问题是。
如果我想转换到Ajax方法,我是否仍然可以利用一个“普通”的Spring MVC应用程序的所有基础设施(例如,特别是验证器和form:errors特性)来将错误返回给浏览器(并在浏览器上显示)?我看到了如何提交Ajax请求,但是我不知道如何(或者是否)仍然可以利用jsp的form:errors功能。
有没有人知道这是否可以做到,如果可以,请给我指出适当的大致方向?
提前谢谢。
发布于 2011-05-18 03:09:31
您不能这样做,因为像<form:errors>
这样的标记是在服务器端计算的,并且会将错误消息/元素嵌入到HTTP响应的HTML内容中。由于对服务器的AJAX请求通常将XML或JSON返回给响应(而不是HTML),然后由客户端JavaScript对其进行解析,因此无法将Spring绑定到请求/表单并向内容中添加错误消息。
发布于 2011-05-18 03:19:43
我在Spring中提交表单时使用了相当多的AJAX。基本上,我所做的是创建了一个form.jsp文件,然后从AJAX调用中返回该文件。由于AJAX将返回包含所有可用表单标记的整个表单,因此我获得了服务器端验证的全部好处。
因此,如果我有一个包含表单的页面,例如,我可以有一个用作表单容器的div
<div id="form-container">
<form id="myform">
Normal form here ...
</form>
</div>
当我提交表单时,我可以使用jQuery加载form.jsp,例如,
$('#myform').submit(function() {
$('#form-container').load('ajax/somehandler');
});
因此,您所要做的就是从控制器返回带有所有正常绑定的form.jsp,就像使用非AJAX方法一样。你明白我的意思吗?
发布于 2011-05-18 03:10:06
不是,不是。当第一次在服务器端生成页面时,form:error
标记发挥了它的魔力。如果因为使用了ajax而没有在服务器端重新生成页面,那么所有这些都不会运行。Errors对象本身并不能完全返回给客户端。我想你可以把它序列化为JSON,但是里面有很多你不需要的东西。当然,它通常只有代码,而不是实际的消息,并且需要消息源来查找翻译。
底线是,当您得到ajax响应时,您需要手动发送错误,并自己在javascript中设置错误消息。
https://stackoverflow.com/questions/6035718
复制相似问题