首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Spring MVC表单:使用Ajax时出错

Spring MVC表单:使用Ajax时出错
EN

Stack Overflow用户
提问于 2011-05-18 02:57:22
回答 3查看 5.3K关注 0票数 5

我有一个与Spring3MVC、Ajax和form相关的问题:错误。

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

我的问题是。

如果我想转换到Ajax方法,我是否仍然可以利用一个“普通”的Spring MVC应用程序的所有基础设施(例如,特别是验证器和form:errors特性)来将错误返回给浏览器(并在浏览器上显示)?我看到了如何提交Ajax请求,但是我不知道如何(或者是否)仍然可以利用jsp的form:errors功能。

有没有人知道这是否可以做到,如果可以,请给我指出适当的大致方向?

提前谢谢。

EN

回答 3

Stack Overflow用户

发布于 2011-05-18 03:09:31

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

票数 6
EN

Stack Overflow用户

发布于 2011-05-18 03:19:43

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

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

代码语言:javascript
运行
复制
<div id="form-container">
    <form id="myform">
        Normal form here ...
    </form>
</div>

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

代码语言:javascript
运行
复制
$('#myform').submit(function() {
    $('#form-container').load('ajax/somehandler');
});

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

票数 6
EN

Stack Overflow用户

发布于 2011-05-18 03:10:06

不是,不是。当第一次在服务器端生成页面时,form:error标记发挥了它的魔力。如果因为使用了ajax而没有在服务器端重新生成页面,那么所有这些都不会运行。Errors对象本身并不能完全返回给客户端。我想你可以把它序列化为JSON,但是里面有很多你不需要的东西。当然,它通常只有代码,而不是实际的消息,并且需要消息源来查找翻译。

底线是,当您得到ajax响应时,您需要手动发送错误,并自己在javascript中设置错误消息。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6035718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档