BindingResult在Eclipse控制台中填充错误消息,但不在表单/网页中填充

时间:2018-07-21 23:56:08

标签: java spring hibernate validation spring-mvc

@RequestMapping(value="/saveOrUpdate", method=RequestMethod.POST)
	public @ResponseBody ModelAndView getSaved(@Valid Users users,BindingResult result){
		Map<String,Object> map = new HashMap<String,Object>();
		
		userServices.saveOrUpdate(users);
			if(result.hasErrors())
			{
				ModelAndView model=new ModelAndView("users");
				return model;
			}
			else
			{
				ModelAndView model=new ModelAndView("users"); 
				return model;
			}}

  

我是否犯了任何错误,或者将bindingresult与responsebody批注一起使用是错误的,有人可以建议我如何解决此问题。   只是为了澄清所有验证注释@size @pattern等都可以正常工作,他们可以进行验证并仅保留有效数据,但是问题是,当用户提供不正确的值时,错误会反映在控制台中,为什么其数据无法保留但不是形式

2 个答案:

答案 0 :(得分:0)

您必须使用<form:errors ..... />下面的示例来显示userName字段错误

<form:errors path="useraName" class="form-control-feedback" />

答案 1 :(得分:0)

  

经过数小时的努力,我终于找到了一种方法,可以将bindingresult对象的错误响应消息绑定为映射为键值并将其发送给json处理函数

对于那些尝试使用html标记而不是spring表单标记来实现spring mvc表单处理并尝试获取错误消息的值以在上面类似的代码填充并显示在您的网页中的用户,请遵循以下代码段:

@RequestMapping(value =“ / saveOrUpdate”,method = RequestMethod.POST)     public @ResponseBody Map getSaved(@Valid Users users,BindingResult结果){         地图map = new HashMap();

    Object obj=new Object();
        if(result.hasErrors())
        {  
            for (Object object : result.getAllErrors()) {
                if(object instanceof FieldError) {
                    FieldError fieldError = (FieldError) object;

                 obj= (fieldError.getDefaultMessage());
                }
            map.put("status","400");
            map.put("message",obj);
            return map;
        }}
           userServices.saveOrUpdate(users);
        map.put("status","200");
        map.put("message","Your record have been saved successfully");
        return map;
        }