SpringMVC 提交表单400 Bad Request

第一种:

1后台:  2@RequestMapping(value="/add",method=RequestMethod.POST) 3    public String add(User user, String addressId) { 4        Address address = userDao.getAddressById(addressId); 5        user.setAddress(address); 6        user.setId(UUID.randomUUID().toString()); 7        userDao.add(user); 8        return "redirect:/list"; 9    } 10 11页面: 12<form action="${pageContext.request.contextPath}/${user.id == null ? 'add' : 'edit'}" method="post"> 13    <input type="hidden" name="id" value="${user.id }"> 14        username:<input type="text" name="username" value="${user.username}"/></br> 15        password:<input type="password" name="password" value="${user.password }"/></br> 16        address:<input type="text" name="addressId" value="${user.address.id }"/></br> 17        birthday:<input type="text" name="date"><br/> 18     <input type="submit" value="提交"> 19 </form>

原因:

  form表单中有日期,

Spring不知道该如何转换,如要在实体类的日期属性上加@DateTimeFormat(pattern="yyyy-MM-dd")注解

第二种:

在提交表单时,发生400错误,并未进入save方法。

?

1@RequestMapping(value="/!save",method = RequestMethod.POST) 2    public String save(@ModelAttribute("user") @Valid UserEntity user, 3      Locale local, 4      BindingResult results){ 5        String message = messageSource.getMessage("name.not.empty", null, local); 6        System.out.println(message); 7        if(results.hasErrors()) 8            return "/user/add"; 9        return "redirect:/user/list"; 10    }

经google后,发现大多是因为表单数据类型与model不匹配,造成。
但是,经过一再减少model内容后,提交表单,问题依旧。
终于在iteye论坛发现:springMVC参数顺序不同导致异常

约定的BindingResult必须紧随@valid之后。    

原来我这里的400是这个原因导致的。以下为正确顺序:

?

1@RequestMapping(value="/!save",method = RequestMethod.POST) 2    public String save(@ModelAttribute("user") @Valid UserEntity user, 3      BindingResult results, 4      Locale local){ 5        String message = messageSource.getMessage("name.not.empty", null, local); 6        System.out.println(message); 7        if(results.hasErrors()) 8            return "/user/add"; 9        return "redirect:/user/list"; 10    }

在解决问题之后,做一下总结:
原因现在知道的有以下两点:

1、提交表单数据类型与model不匹配
2、方法参数顺序不正确


点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

java将前端的json数组字符串转换为列表

记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang

mysql设置时区

mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0