@RequestMapping("save")
@ResponseBody
public Result save(HttpServletRequest request,HttpServletResponse response,ScorePo scorePo) throws Exception{前端
相似這樣的,若是前端 form 表單 提交一個 實體的參數 java
方式一在實體類中加日期格式化註解:spring
好比:後端
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
protected java.util.Date createTime; /*建立時間*/app
其餘方式就是 在MVC 裏面 加入一段數據時間綁定處理的方式。ide
或者來一個全局的時間格式處理 這裏不進行說明ui
或者是 好比this
<label class="col-sm-1 control-label no-padding-right"
for="form-field-1">制定日期<span class="middle red">*</span></label>
<div class="col-sm-4">
<input name="createTimeString" id="createTimeString"
type="text" onFocus="WdatePicker({lang:'zh-cn',dateFmt:'yyyy-MM-dd HH:mm:ss'})" value="" ltype="text" validate='{required:true,date:true}' readonly />
</div>spa
<label class="col-sm-1 control-label no-padding-right"
for="form-field-1">制定日期22<span class="middle red">*</span></label>
<div class="col-sm-4">
<input name="createTime" id="createTime"
type="text" onFocus="WdatePicker({lang:'zh-cn',
dateFmt:'yyyy-MM-dd HH:mm:ss'})" validate='{required:true,date:true}' readonly value="${(bean.createTime?string('yyyy-MM-dd HH:mm:ss') )!}" />
</div>orm
咱們將制定日期改一個 name 在後端 進行 獲取參數,而後轉化爲 date 類型便可
String createTimeString=RequestUtil.getStringParameter(request, "createTimeString");
目前就這幾種方式試過了,都是能夠的
可是有時候仍是會遇到其餘的問題,好比個人項目裏面
HrEffPfmcePscoreController extends BasicController{
繼承了一個類型,
public abstract class BasicController{
protected Logger logger = LoggerFactory.getLogger(getClass());
@InitBinder
protected void initBinder(WebDataBinder binder) {
binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"), true));
}
裏面的 日期轉化代碼 已經寫好了,
但是若是 前端 <input name="createTime" id="createTime"
type="text" onFocus="WdatePicker({lang:'zh-cn',
dateFmt:'yyyy-MM-dd'})"
的時間格式 和後臺的 轉換的時間格式不一致,也是會 爆400錯誤的。
那麼 這樣時候就要 重寫 方法了
// 若是時間格式的要求改了前端,那麼後端要對應的進行 重寫改方法,才能夠的,不然是不起做用的
@Override
protected void initBinder(WebDataBinder binder) {
binder.registerCustomEditor
(Date.class, new CustomDateEditor
(new SimpleDateFormat("yyyy-MM-dd"), true));
}
重寫 時間轉換格式,和前端的對應起來便可。
固然還有一種最笨的方法
搞一個 實體子類,基本實體類,在 實體子類裏面 對時間進行轉換,而後將實體子類 和前端的對應起來
好比:
public class HrEffPfmcePlaneePo extends HrEffPfmcePlaneeTbl{
private static final long serialVersionUID = 1L;
/**
* 計劃結束時間的 時間字符串,爲了解決 前端爆時間 400
* 等解決了就能夠去掉了
*/
protected String planEtimeString;
public String getPlanEtimeString() {
if (getPlanEtime() !=null) {
return DateUtils.toString(getPlanEtime(),"yyyy-MM-dd");
}else {
return planEtimeString;
}
}
public void setPlanEtimeString(String planEtimeString) {
this.planEtimeString = planEtimeString;
}
這樣就確定能夠解決了。
解決辦法還有不少,最好仍是 你們看看springMVC的源碼,繼續改進