SpringMVC 自動繫結資料
阿新 • • 發佈:2018-12-15
第一種:繁重操作解決方式
不在Controller裡面寫InitBinder方法,直接在實體類裡面將DATE型別的欄位上加註解。
/** * 債務履行起始時間 */ @DateTimeFormat(pattern = "yyyy-MM-dd") @Temporal(TemporalType.TIMESTAMP) private Date ZWLXQSSJ; /** * 債務履行結束時間 */ @DateTimeFormat(pattern = "yyyy-MM-dd") @Temporal(TemporalType.TIMESTAMP) private Date ZWLXJSSJ;
第二種:比較繁重操作解決方式
在Controller裡面寫InitBinder方法。
@InitBinder protected void initBinder(WebDataBinder binder) { //The date format to parse or output your dates SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //Create a new CustomDateEditor CustomDateEditor editor = new CustomDateEditor(dateFormat, true); //Register it as custom editor for the Date type binder.registerCustomEditor(Date.class, editor); }
第三種:輕鬆解決方式
自己寫一個DATE資料繫結類,然後在Controller的initBinder方法裡直接引用。
package com.xqx.spfzj.util; import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.beans.PropertyEditorSupport; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class SpecialDateEditor extends PropertyEditorSupport { private final Logger logger = LoggerFactory.getLogger(getClass()); @Override public void setAsText(String text) throws IllegalArgumentException { SimpleDateFormat yyyyMMdd_HHmmss = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat yyyyMMdd = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat yyyyMM = new SimpleDateFormat("yyyy-MM"); Date date = null; try { if(StringUtils.isNotBlank(text)){ date = yyyyMMdd_HHmmss.parse(text); } } catch (ParseException e) { try { date = yyyyMMdd.parse(text); } catch (ParseException e1) { try{ date = yyyyMM.parse(text); }catch (Exception e2) { logger.error("自動繫結日期資料出錯", e); } } } setValue(date); } }
@InitBinder
protected void initBinder(WebDataBinder binder) {
binder.registerCustomEditor(Date.class, new com.xqx.spfzj.util.SpecialDateEditor());
}