(转)SpringMVC:提交数据遭遇基础类型和日期类型报400错误解决方法
来源:互联网 发布:淘宝上的跳蛋干净吗 编辑:程序博客网 时间:2024/06/09 19:08
原文地址:http://www.cnblogs.com/morlin/p/4382707.html?utm_source=tuicool&utm_medium=referral
使用SpringMVC开发的时候,页面如果有日期格式的数据,后台接受也是java.util.Date,则报告400错误 。下面是解决方案的演示示例:
这个是实体类,里面createDate就是java.util.Date类型
import java.util.Date;public class User { private int userId; private String userName; private Date createDate; public User() {} public User(int userId, String userName, Date createDate) { super(); this.userId = userId; this.userName = userName; this.createDate = createDate; } public User(String userName, Date createDate) { super(); this.userName = userName; this.createDate = createDate; } public int getUserId() { return userId; } public void setUserId(int userId) { this.userId = userId; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public Date getCreateDate() { return createDate; } public void setCreateDate(Date createDate) { this.createDate = createDate; } @Override public String toString() { return "User [createDate=" + createDate + ", userId=" + userId + ", userName=" + userName + "]"; }}
页面代码
<form action="regUser" method="post"> userName:<input type="text" name="userName"/><br> createDate:<input type="text" name="createDate"/><br> double类型:<input type="text" name="dd"/><br> <input type="submit" value="注册"> </form>
因为对于原生基本类型的form表单绑定,会出错。需要指定具体的类型编辑器。用法如下:首先在BaseController中增加方法initBinder,并使用注解@InitBinder标注,那么spring mvc在绑定表单之前,都会先注册这些编辑器。剩下的控制器都继承该类。CustomDateEditor spring自己已经提供了。代码如下:
import java.text.SimpleDateFormat;import java.util.Date;import org.springframework.beans.propertyeditors.CustomDateEditor;import org.springframework.stereotype.Controller;import org.springframework.web.bind.WebDataBinder;import org.springframework.web.bind.annotation.InitBinder;import sun.beans.editors.DoubleEditor;import sun.beans.editors.FloatEditor;import sun.beans.editors.IntEditor;import sun.beans.editors.LongEditor;@Controllerpublic class BaseController { @InitBinder public void initBinder(WebDataBinder binder) { binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), true)); binder.registerCustomEditor(int.class, new IntEditor()); binder.registerCustomEditor(long.class, new LongEditor()); binder.registerCustomEditor(double.class, new DoubleEditor()); binder.registerCustomEditor(float.class, new FloatEditor()); }}
上面的代码不仅仅有日期格式的编辑器,还有基础类型的编辑器,这样就解决了SpringMVC中controller方法接受参数的时候,基础类型报错的问题了。
下面是测试用代码,继承BaseController之后就可以直接运行了。接受的参数有实体类和基础类型。
import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import com.kickstarter.entity.User;@Controller("userController")public class UserController extends BaseController{ @RequestMapping(value="regUser") public String dateTest(User user , double dd){ System.out.println( user.toString() ); System.out.println( dd ); return "index"; }}
以上,问题解决。然后我们切换第二种方式,删除 BaseController 这个类,直接在User实体类中的 createDate字段上加上注解
import java.util.Date;import org.springframework.format.annotation.DateTimeFormat;public class User { private int userId; private String userName; @DateTimeFormat(pattern="yyyy-MM-dd") private Date createDate; public User() {} public User(int userId, String userName, Date createDate) { super(); this.userId = userId; this.userName = userName; this.createDate = createDate; } public User(String userName, Date createDate) { super(); this.userName = userName; this.createDate = createDate; } public int getUserId() { return userId; } public void setUserId(int userId) { this.userId = userId; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public Date getCreateDate() { return createDate; } public void setCreateDate(Date createDate) { this.createDate = createDate; } @Override public String toString() { return "User [createDate=" + createDate + ", userId=" + userId + ", userName=" + userName + "]"; }}
这样也可以解决日期格式报400问题。而且不管页面是否有数据都可以正常使用。
1 0
- (转)SpringMVC:提交数据遭遇基础类型和日期类型报400错误解决方法
- SpringMVC + Spring + MyBatis 学习笔记:提交数据遭遇基础类型和日期类型报400错误解决方法
- SpringMVC + Spring + MyBatis 学习笔记:提交数据遭遇日期格式转化报400错误解决方法
- Springmvc提交日期类型参数
- Springmvc保存时间的时候报转换类型错误解决方法
- springMVC form表单提交---包含时间类型的数据报错400
- springMVC类型转换,提交日期字符数据自动转换日期格式
- springmvc-日期类型初始绑定报错
- springmvc报400错误,并用@inintBinder解决类型转换问题
- SpringMVC自定义日期类型的数据绑定
- SpringMVC自定义日期类型的数据绑定
- SpringMVC自定义日期类型的数据绑定
- springmvc使用实体类接收表单提交数据中含有String类型对应Date类型的不匹配报错400时如何处理
- sqoop导入数据时间日期类型错误
- springmvc form表单提交报400错误
- SpringMvc 参数是对象,包含不提交基本类型的时候 400错误
- springMVC form表单提交---包含时间类型的数据
- springMVC form表单提交---包含时间类型的数据
- C++类中常量定义
- SpringMVC——/和/*的区别以及原理分析
- 历届试题 九宫重排 蓝桥杯
- HTML&CSS设计与构建网站(一)
- 校园宽带客户端认证程序无法继续初始化绑定通信接口网络地址失败_解决办法
- (转)SpringMVC:提交数据遭遇基础类型和日期类型报400错误解决方法
- 简述web功能
- 关于指数记数法在%la,%le,%lf下的输出~
- 分页处理
- 我的心得五:一个没有方法论的人生,该有多么混乱
- POJ
- PIC单片机-RS232串口通信
- 我眼中的Redis
- java的Workbook.getWorkbook(fis)注意事项