Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >SpringMVC 提交表单400 Bad Request

SpringMVC 提交表单400 Bad Request

作者头像
冷冷
发布于 2018-02-08 03:15:37
发布于 2018-02-08 03:15:37
1.7K00
代码可运行
举报
文章被收录于专栏:冷冷冷冷
运行总次数:0
代码可运行

第一种:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
后台: 
@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
代码运行次数:0
运行
AI代码解释
复制
页面:
<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
代码运行次数:0
运行
AI代码解释
复制
@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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
Spring中的@Valid 和 @Validated注解你用对了吗
本文我们将重点介绍Spring中 @Valid和@Validated注解的区别 。
JadePeng
2021/01/20
9.2K0
1.Hibernate-Validate校验框架
SpringBoot对表单数据校验采用了Hibernate-Validate校验框架
Yuyy
2022/06/28
2560
​SpringMVC 教程 - Handler Method
由注解@RequestMapping注解修饰的处理请求的函数的签名非常的灵活,可以使用controller函数支持的一系列参数和返回值。
代码拾遗
2018/07/24
9640
SpringMVC参数校验
我们在做Web层的时候,接收了各种参数,尽管前端已经做了验证,但难免恶意传参,所以要对传过来的数据保持不信任的态度来进行参数校验
晚上没宵夜
2020/03/10
1.2K0
《Java从入门到放弃》框架入门篇:springMVC数据校验
昨天我们扯完了数据传递,今天我们来聊聊数据校验的问题。来,跟着我一起读:计一噢叫,一按艳。 在springMVC中校验数据也非常简单,spring3.0拥有自己独立的数据校验框架,同时支持JSR303标准的校验框架。 Spring的DataBinder在进行数据绑定时,会同时调用校验框架完成数据校验工作。 具体使用步骤如下: 1)导入数据校验的JAR包 2)在springmvc的配置文件中添加校验Bean 3)修改实体类,在属性上加上校验的注解 4)修改昨天的login4方法,加上校验的相关代码
十方上下
2018/06/14
5970
Spring 4 MVC 表单校验资源处理(带源码)
下一篇文章:Spring 4 MVC 视图解析器(XML JSON PDF等) 纯注解
明明如月学长
2021/08/27
5650
一个简单完整的WEB系统
用户通过表单提交数据,存入MySQL数据库,提交成功后显示数据库中所有数据的列表。
会洗碗的CV工程师
2022/11/29
4850
一个简单完整的WEB系统
SpringMVC入门终结篇
如果采用上面的合并配置文件,那么相当于系统一起动只有一个IOC容器,这样一部分报错,整个容器就凉凉
大忽悠爱学习
2021/11/15
1.5K0
SpringMVC的架构有什么优势?——控制器(一)
控制器是Spring MVC中最重要的组件之一,它处理来自客户端的请求并返回响应。控制器通常使用注解或XML配置方式将请求映射到处理方法上。 控制器(Controller)是Spring MVC中最重要的组件之一,它负责接收来自客户端的请求并执行相应的业务逻辑,并将结果返回给客户端。Spring MVC框架提供了多种方式来实现控制器,其中最常用的方式是使用注解或XML配置方式将请求映射到处理方法上。
一只
2024/07/02
3150
SpringMVC的架构有什么优势?——控制器(一)
Spring MVC-08循序渐进之国际化(基于Session-SessionLocaleResolver)
在Spring MVC中选择语言区域,可以使用语言解析器Bean,它包括几个实现,如下
小小工匠
2021/08/17
3720
SpringMVC参数校验(针对`@RequestBody`返回`400`)
SpringMVC参数校验(针对@RequestBody返回400) From https://ryan-miao.github.io/2017/05/20/spring400/ 前言 习惯别人帮忙做事的结果是自己不会做事了。一直以来,spring帮我解决了程序运行中的各种问题,我只要关心我的业务逻辑,设计好我的业务代码,返回正确的结果即可。直到遇到了400。 spring返回400的时候通常没有任何错误提示,当然也通常是参数不匹配。这在参数少的情况下还可以一眼看穿,但当参数很大是,排除参数也很麻烦,更何况
Ryan-Miao
2018/03/13
2.9K0
_一个简单完整的WEB系统
用户通过表单提交数据,存入MySQL数据库,提交成功后显示数据库中所有数据的列表。
会洗碗的CV工程师
2023/11/24
1840
_一个简单完整的WEB系统
史上最强Spring mvc入门
一、SpringMVC基础入门,创建一个HelloWorld程序   1.首先,导入SpringMVC需要的jar包。   2.添加Web.xml配置文件中关于SpringMVC的配置 <!--c
xiangzhihong
2018/02/01
1.4K0
史上最强Spring mvc入门
Spring 全家桶之 Spring Web MVC(五)- Data Binder
Spring MVC会将页面请求的数据转换成自定义的类型,如将页面提交的POST表单数据"employeeName=stark&age=40&gender=1&email=stark@gmail.com"转换成Employee对象。
RiemannHypothesis
2022/08/19
7460
Spring 全家桶之 Spring Web MVC(五)- Data Binder
SpringMVC(一)
概述 SpringMVC 通过一套 MVC 注解,让一个 POJO 成为处理请求的控制器,而无需实现任何接口 HelloWorld 步骤概括 加入 jar 包 加入 SpringMVC 配置文件 在 web.xml 文件中配置 DispatcherServlet 编写处理请求的处理器,并标识为处理器 编写视图 详细步骤 创建 Maven 工程,加入 jar 依赖 <properties> <spring.verison>4.3.8.RELEASE</spring.verison> </prop
bgZyy
2018/06/07
9160
SpringMVC扩展(一)
Representational State Transfer,表述性状态转移,是一种软件架构风格 查看、修改、删除所对应的传统URL与REST风格的URL对比
Java_慈祥
2024/08/06
2580
SpringMVC扩展(一)
Spring MVC-07循序渐进之验证器 下 (JSR 303验证)
JSR303”Bean Validation” 和 JSR349 “Bean Validation 1.1”指定了一整套的API,通过标注对象属性添加约束。
小小工匠
2021/08/17
5830
SpringMVC框架介绍[通俗易懂]
1、前端控制器DispatcherServlet(不需要程序员开发) 作用接收请求,响应结果,相当于转发器,中央处理器。 有了DispatcherServlet减少了其它组件之间的耦合度。
全栈程序员站长
2022/09/06
1.4K0
SpringMVC框架介绍[通俗易懂]
SpringMVC学习笔记
(1)通过 contextConfigLocation 来配置 SpringMVC 的配置文件
shirayner
2018/08/10
1.4K0
SpringMVC学习笔记
SpringMVC的架构有什么优势?——表单和数据校验(四)
Spring MVC提供了一种方便的机制来将表单数据绑定到JavaBean对象上,以便进行验证和处理。 表单数据绑定是Spring MVC框架中一种非常重要的机制,它允许开发者将HTTP请求中的表单数据自动绑定到JavaBean对象上,并进行验证和处理。这使得开发者能够更加方便地编写Web应用程序,同时减少了重复代码的数量。
一只
2024/06/26
1870
相关推荐
Spring中的@Valid 和 @Validated注解你用对了吗
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验