Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery SpringMVC3.1和ajax调用的错误消息_Jquery_Spring Mvc_Bean Validation - Fatal编程技术网

Jquery SpringMVC3.1和ajax调用的错误消息

Jquery SpringMVC3.1和ajax调用的错误消息,jquery,spring-mvc,bean-validation,Jquery,Spring Mvc,Bean Validation,我正在开发一个SpringMVC3.1Web应用程序,几乎所有的表单提交都是使用jQueryAjax调用和表单序列化完成的。这很有效。我需要一种从服务器中提取验证错误消息的方法,因此我寻找了一个示例。我在网上找到了一个将BindingResult对象放在自定义JsonResponse对象中,然后作为@responseBy返回的对象。这也是工作的伟大!这就是我的问题所在,尽管BindingResult对象返回,但没有一条消息像我使用Spring:form标记时那样被插入。我研究了这个问题,发现我可

我正在开发一个SpringMVC3.1Web应用程序,几乎所有的表单提交都是使用jQueryAjax调用和表单序列化完成的。这很有效。我需要一种从服务器中提取验证错误消息的方法,因此我寻找了一个示例。我在网上找到了一个将BindingResult对象放在自定义JsonResponse对象中,然后作为
@responseBy
返回的对象。这也是工作的伟大!这就是我的问题所在,尽管
BindingResult
对象返回,但没有一条消息像我使用Spring:form标记时那样被插入。我研究了这个问题,发现我可以尝试用一个自定义的来覆盖
springmessagesourceinterpolator
,这很有帮助,但现在只有JSR-303验证错误插入,而不是来自Spring绑定的实际
TypeMismatch
错误。下面是我正在做的一个例子:

     public @ResponseBody
     JSonResponse addQuote(@ModelAttribute("quote") @Valid QuoteBean quote, BindingResult result, HttpServletRequest request, HttpServletResponse response) throws IOException
     {
        jsonResponse = new JsonResponse();

        //Some handle code

        jsonResponse.setStatus(JsonResponse.ResponseStatus.INVALID);
        jsonResponse.setResult(result.getAllErrors());

        return jsonResponse;
     }

正如我所说,Json被完美地序列化了,对于JSR-303错误,错误对象的
defaultMessage
字段是一条插值消息,但是如果错误是Spring
TypeMismatch
(比如将
1
放入绑定到日期的字段中),我会得到一条由Spring生成的长消息。我尝试添加与对象上的所有
error.getCodes()
相对应的消息代码,但没有效果(例如
TypeMismatch.fieldname
)。肯定有人使用过Spring和Ajax并进行了验证,但我找不到答案。

我遇到了一个类似的问题,即使用jQuery发布表单。目前,我只是使用以下命令从控制器返回bindingresult作为字符串:

return bindingResult.getAllErrors()
作为开发应用程序的临时解决方案,我正在解析返回的json数据,并在警报弹出窗口中简单显示defaultMessage

您是否设法将返回的json defaultmessage与关联的表单输入元素关联起来


我真的很想知道你是如何(详细地)处理这件事的,因为关于这件事的文档资料并不多,不管是从spring还是其他方面。

为了得到字段旁边的消息,我最终做了类似于spring的
表单
标记,我在所有字段旁边添加了新的
div
s,给他们一个CSS类
error
,然后添加了一个自定义属性,如
datafield='username'
。然后,我的Ajax回调使用
$(this.data(response.field)
扫描表单,查找
div.error
,因为Spring
bindingResult
对象上有一个字段名。同样,我的问题是使那些
defaultMessage
字段更友好。嗨,马克,谢谢你的提醒,我有这样的想法,但作为这个项目中许多技术的新手(spring mvc/jquery等),我的学习曲线非常陡峭。你介意分享你的代码吗?比如表单/divs和ajax回调函数?这真的很有帮助。马克-我正要编写这个-如果你能帮我的话,你的例子会帮我省去很多痛苦吗?