SpringMVC + Spring + MyBatis 学习笔记:提交数据遭遇日期格式报400错误解决方法

系统:WIN8.1

数据库:Oracle 11GR2

开发工具:MyEclipse 8.6

框架:Spring3.2.9、SpringMVC3.2.9、MyBatis3.2.8



使用SpringMVC开发的时候,页面如果有日期格式的数据,后台接受也是java.util.Date,则报告400错误 。下面是解决方案的演示示例:

这个是实体类,里面createDate就是java.util.Date类型

 1 import java.util.Date;
 2
 3 public class User {
 4
 5     private int userId;
 6     private String userName;
 7     private Date createDate;
 8
 9     public User() {}
10
11     public User(int userId, String userName, Date createDate) {
12         super();
13         this.userId = userId;
14         this.userName = userName;
15         this.createDate = createDate;
16     }
17
18     public User(String userName, Date createDate) {
19         super();
20         this.userName = userName;
21         this.createDate = createDate;
22     }
23
24     public int getUserId() {
25         return userId;
26     }
27
28     public void setUserId(int userId) {
29         this.userId = userId;
30     }
31
32     public String getUserName() {
33         return userName;
34     }
35
36     public void setUserName(String userName) {
37         this.userName = userName;
38     }
39
40     public Date getCreateDate() {
41         return createDate;
42     }
43
44     public void setCreateDate(Date createDate) {
45         this.createDate = createDate;
46     }
47
48     @Override
49     public String toString() {
50         return "User [createDate=" + createDate + ", userId=" + userId
51                 + ", userName=" + userName + "]";
52     }
53 }

页面代码

1   <form action="regUser" method="post">
2         userName:<input type="text" name="userName"/><br>
3         createDate:<input type="text" name="createDate"/><br>
4         double类型:<input type="text" name="dd"/><br>
5         <input type="submit" value="注册">
6     </form>

因为对于原生基本类型的form表单绑定,会出错。需要指定具体的类型编辑器。用法如下:首先在BaseController中增加方法initBinder,并使用注解@InitBinder标注,那么spring mvc在绑定表单之前,都会先注册这些编辑器。剩下的控制器都继承该类。CustomDateEditor spring自己已经提供了。代码如下:

 1 import java.text.SimpleDateFormat;
 2 import java.util.Date;
 3
 4 import org.springframework.beans.propertyeditors.CustomDateEditor;
 5 import org.springframework.stereotype.Controller;
 6 import org.springframework.web.bind.WebDataBinder;
 7 import org.springframework.web.bind.annotation.InitBinder;
 8
 9 import sun.beans.editors.DoubleEditor;
10 import sun.beans.editors.FloatEditor;
11 import sun.beans.editors.IntEditor;
12 import sun.beans.editors.LongEditor;
13
14 @Controller
15 public class BaseController {
16
17     @InitBinder
18     public void initBinder(WebDataBinder binder) {
19
20         binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), true));
21         binder.registerCustomEditor(int.class, new IntEditor());
22         binder.registerCustomEditor(long.class, new LongEditor());
23         binder.registerCustomEditor(double.class, new DoubleEditor());
24         binder.registerCustomEditor(float.class, new FloatEditor());
25     }
26
27
28 }

上面的代码不仅仅有日期格式的编辑器,还有基础类型的编辑器,这样就解决了SpringMVC中controller方法接受参数的时候,基础类型报错的问题了。

下面是测试用代码,继承BaseController之后就可以直接运行了。接受的参数有实体类和基础类型。

 1 import org.springframework.stereotype.Controller;
 2 import org.springframework.web.bind.annotation.RequestMapping;
 3
 4 import com.kickstarter.entity.User;
 5
 6 @Controller("userController")
 7 public class UserController extends BaseController{
 8
 9     @RequestMapping(value="regUser")
10     public String dateTest(User user , double dd){
11
12         System.out.println( user.toString() );
13         System.out.println( dd );
14         return "index";
15     }
16 }

以上,问题解决。

时间: 2024-11-08 03:43:03

SpringMVC + Spring + MyBatis 学习笔记:提交数据遭遇日期格式报400错误解决方法的相关文章

SpringMVC提交数据遭遇基础类型和日期类型报400错误解决方法

使用SpringMVC开发的时候,页面如果有日期格式的数据,后台接受也是java.util.Date,则报告400错误 .下面是解决方案的演示示例: 这个是实体类,里面createDate就是java.util.Date类型 1 import java.util.Date; 2 3 public class User { 4 5 private int userId; 6 private String userName; 7 private Date createDate; 8 9 public

SpringMVC + Spring + MyBatis 学习笔记:提交数据遭遇基础类型和日期类型报400错误解决方法

系统:WIN7 数据库:mysql 开发工具:Eclipse 框架:Spring3.2.9.SpringMVC3.2.9.MyBatis3.2.8 使用SpringMVC开发的时候,页面如果有日期格式的数据,后台接受也是java.util.Date,则报告400错误 . 在controller使用对象来接收前台页面的date数据类型时报400错误 下面是解决方案的演示示例: 这个是实体类,里面createDate就是java.util.Date类型 1 import java.util.Date

SpringMVC + Spring + MyBatis 学习笔记:遭遇order by 排序问题

系统:WIN8.1 数据库:Oracle 11GR2 开发工具:MyEclipse 8.6 框架:Spring3.2.9.SpringMVC3.2.9.MyBatis3.2.8 用MyBatis写排序的时候字段很多,于是想当然的就把需要排序的字段用String类型扔到了配置文件里面.但是却没有起到效果.后来查阅资料,发现应该使用$符号. #符号将传入的数据都当做一个字符串,会对数据增加一个引号,如 order by #userid# , userid对应的值是10001,解析后就是 order 

SpringMVC + Spring + MyBatis 学习笔记:SpringMVC和Spring一同工作的时候,AOP事务管理不起作用的解决方法

系统:WIN8.1 数据库:Oracle 11GR2 开发工具:MyEclipse 8.6 框架:Spring3.2.9.SpringMVC3.2.9.MyBatis3.2.8 SpringMVC 的 springmvc.xml文件中 配置扫描包,不要包含 service的注解,Spring 的 配置文件配置包扫描时,不要包含controller的注解,如下所示: Spring MVC的配置文件: <context:component-scan base-package="包路径"

SpringMVC + Spring + MyBatis 学习笔记:为MyBatis增加打印SQL功能 (最简化配置)

系统:WIN8.1 数据库:Oracle 11GR2 开发工具:MyEclipse 8.6 框架:Spring3.2.9.SpringMVC3.2.9.MyBatis3.2.8 1.以下jar包拷贝到lib目录下 2.在src目录下增加log4j.properties文件,内容如下 1 # Global logging configuration 2 log4j.rootLogger=ERROR, stdout 3 # log4j.logger后面跟着的是项目dao包路径,里面全部都是dao层的

SpringMVC + Spring + MyBatis 学习笔记:在类和方法上都使用RequestMapping如何访问

系统:WIN8.1 数据库:Oracle 11GR2 开发工具:MyEclipse 8.6 框架:Spring3.2.9.SpringMVC3.2.9.MyBatis3.2.8 先看代码: @RequestMapping(value="manager") @Controller("managerController") public class ManagerController { /** * 后台用户登录 * @param request * @param em

转 Android学习笔记: 学习过程中碰到的一些问题及解决方法

在学习Android开发的过程中遇到了不少的问题,所幸的是最终经过上网查询都得到了解决.现在将我在学习Android开发过程中遇到的一些问题及解决的方法整理如下. 1.R.java不能实时更新 问题描述:在res文件中新增的变量不能在R.java中实时的显示出来. 解决方法:选择菜单栏的“Project”,勾选“Build Automatically”选项. 2.LogCat视窗没有显示 问题描述:在Eclipse的右下方没有显示LogCat视窗. 解决方法:选择菜单栏的“Windows”,再选

spring MVC 控制器(controller)接收日期类型参数出现400错误

最近刚学完 spring mvc ,遇到一个问题.就是当我表单有日期类型的数据(如出生日期)提交到后台控制器时:就发生了400error:400error用简短的话来说就是请求参数类型和后台接收参数类型对不上等. 我大概一猜就知道是因为日期类型参数的问题:下面总结了一些处理 springMVC 在接收date类型参数的处理. ====方法one 我们后台的参数用String先接收,再把string转成date./** * 新增员工 * * @param empVo * @return 返回成功标

SpringMVC 返回json的日期格式的问题的解决方法

springMVC中josn的日期类型输出默认是时间戳,需要进行日期格式转换. 格式化输出json 方法1. 在实体类的getter方法上面添加@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") 就可以将json的日期格式化.需要导入的json的相关jar包 @JsonFromat存在于jackson-annotations-2.1.0.jar中. Maven项目需要添加的依赖: <!--