SpringMVC接收java.util.Date类型数据
在Controller中如下定义方法
1
2
3
|
public PassQueryRequest trade( @ModelAttribute PassQueryRequest tradeRequest, @RequestParam (value= "startDate" , required= true )Date startDate, @RequestParam (value= "endDate" , required= true )Date endDate |
1、在springmvc中使用对象接收参数时
在PassQueryRequest中,在日期属性的set方法中增加定义,以及maven配置
1
2
3
4
|
@DateTimeFormat (pattern= "yyyy-MM-dd HH:mm:ss" ) public Date getStartDate() { return startDate; } |
1
2
3
4
5
|
< dependency > < groupId >joda-time</ groupId > < artifactId >joda-time</ artifactId > < version >${joda-time.version}</ version > </ dependency > |
2、直接使用java.util.Date变量接收参数
1
2
3
4
5
6
7
8
9
10
11
|
@org .springframework.web.bind.annotation.InitBinder public void InitBinder( /* HttpServletRequest request, */ ServletRequestDataBinder binder) { // 不要删除下行注释!!! 将来"yyyy-MM-dd"将配置到properties文件中 // SimpleDateFormat dateFormat = new // SimpleDateFormat(getText("date.format", request.getLocale())); System.out.println( "执行了InitBinder方法" ); SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" ); dateFormat.setLenient( false ); binder.registerCustomEditor(Date. class , null , new CustomDateEditor(dateFormat, true )); } |
解决 springmvc中接收date数据问题
springmvc Controller类中需要接收的是Date类型,但是在页面端传过来的是String类型,就会出现以下异常
Failed to convert value of type 'java.lang.String' to required type 'java.util.Date';
这里提供三种解决方案。
一、局部转换
1
2
3
4
5
6
7
8
9
10
11
12
13
|
@Controller @RequestMapping ( "order" ) public class OrderCtrl extends CtrlSupport { private static final Logger logger = LoggerFactory.getLogger(OrderCtrl. class ); // 将字符串转换为Date类 @InitBinder public void initBinder(WebDataBinder binder, WebRequest request) { // 转换日期格式 DateFormat dateFormat = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" ); binder.registerCustomEditor(Date. class , new CustomDateEditor(dateFormat, true )); } } |
二、全局转换
1.创建convertDate类实现WebBindingInitializer接口
1
2
3
4
5
6
7
8
9
|
public class convertDate implements WebBindingInitializer{ @Override public void initBinder(WebDataBinder binder, WebRequest request) { // TODO Auto-generated method stub //转换日期 DateFormat dateFormat= new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" ); binder.registerCustomEditor(Date. class , new CustomDateEditor(dateFormat, true )); } } |
2.在Spring-MVC.xml中配置日期转换
1
2
3
4
5
6
|
<!-- 日期转换 --> < bean class = "org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" > < property name = "webBindingInitializer" > < bean class = "com.wx.web.convertDate" /> </ property > </ bean > |
三、get方法配置
1
2
3
4
5
6
7
8
9
10
11
|
import org.springframework.format.annotation.DateTimeFormat; import com.fasterxml.jackson.annotation.JsonFormat; @DateTimeFormat (pattern = "yyyy-MM-dd" ) @JsonFormat (pattern= "yyyy-MM-dd" ,timezone= "GMT+8" ) public Date getGetLicenseTime() { return getLicenseTime; } public void setGetLicenseTime(Date getLicenseTime) { this .getLicenseTime = getLicenseTime; } |
@JsonFormat
默认是标准时区的时间, 北京时间 东八区 timezone=”GMT+8”
作用:后台的时间 格式化 发送到前台
@DateTimeFormat
接受前台的时间格式 传到后台的格式
以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/mlz_2/article/details/53813527