@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的源码,继续改进