SpringMVC 提交表单400 Bad Request
时间:2022-04-27
本文章向大家介绍SpringMVC 提交表单400 Bad Request,主要内容包括第一种:、第二种:、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
第一种:
后台:
@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";
}
页面:
<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是这个原因导致的。以下为正确顺序:
@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、方法参数顺序不正确
- struts2实现ajax校验的2种方法
- 单例对象
- Android+struts2+json方式模拟手机登录功能
- iOS 获取通讯录里边的电话号码AddressBook
- InvocationTargetException异常解析
- Spring Cloud构建微服务架构:服务注册与发现(Eureka、Consul)【Dalston版】
- java基础多线程之共享数据
- Spring Boot自动化配置的利弊及解决之道
- Java四种引用解析以及在Android的应用
- java基础之泛型
- java基础之反射
- 第四章 正则表达式回溯法原理
- Spring Boot属性配置文件详解
- StickyListHeaders的使用
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释