前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringMVC 提交表单400 Bad Request

SpringMVC 提交表单400 Bad Request

作者头像
冷冷
发布2018-02-08 11:15:37
1.6K0
发布2018-02-08 11:15:37
举报
文章被收录于专栏:冷冷冷冷

第一种:

代码语言:javascript
复制
后台: 
@RequestMapping(value="/add",method=RequestMethod.POST)
    public String add(User user, String addressId) {
        Address address = userDao.getAddressById(addressId);
        user.setAddress(address);
        user.setId(UUID.randomUUID().toString());
        userDao.add(user);
        return "redirect:/list";
    }
代码语言:javascript
复制
页面:
<form action="${pageContext.request.contextPath}/${user.id == null ? 'add' : 'edit'}" method="post">
    <input type="hidden" name="id" value="${user.id }">
        username:<input type="text" name="username" value="${user.username}"/></br>
        password:<input type="password" name="password" value="${user.password }"/></br>
        address:<input type="text" name="addressId" value="${user.address.id }"/></br>
        birthday:<input type="text" name="date"><br/>
     <input type="submit" value="提交">
 </form>

原因:

  form表单中有日期,

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

第二种:

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

?

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

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

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

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

?

代码语言:javascript
复制
@RequestMapping(value="/!save",method = RequestMethod.POST)
    public String save(@ModelAttribute("user") @Valid UserEntity user,
      BindingResult results,
      Locale local){
        String message = messageSource.getMessage("name.not.empty", null, local);
        System.out.println(message);
        if(results.hasErrors())
            return "/user/add";
        return "redirect:/user/list";
    }

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

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第一种:
  • 第二种:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档