1、页面
<DatePicker type="date" @on-change="model.planStartData=$event" v-model.trim="model.planStartData" placeholder="Select date" style="width: 100%"></DatePicker>
2、后台处理
(1)、后台实体类中date字段的注解
@Temporal(TemporalType.DATE)
@Column
private Date actualStartData;
(2)、创建一个日期处理控制层
public class BaseController<T> {
/**
* 事件类型公共处理
* @param binder
*/
@InitBinder
protected void initBinder(WebDataBinder binder) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
}
}
3、在其他控制类中继该控制类(上面的字段actualStartData在Project类中,在Project处理数据控制层继承上面的类)
public class ProjectController extends BaseController<Project> {
@PostMapping("add")
public void addProject(Project Project) {
// 此处为逻辑处理
}
}
4、前端在添加的时候对字段进行判断是否有值,没值的话删除该字段(para为封装后传到后台的project的对象)
let para = this.model
if (!para.planStartData) {
delete para.planStartData
}
5、下来就可以直接保存了
6、回显,在数据库查到数据库,显示编辑模态框时,对date数据提前进行处理
/**
* 显示编辑界面
* @param {object} row 当前行数据
*/
handleEdit(row) {
this.$refs['edit'].showModal('edit')
// 模拟异步请求(获取详情)
setTimeout(() => {
let edit = Object.assign({}, row)
if (edit.planStartData) {
edit.planStartData = new Date(edit.planStartData)
}
this.edit = {
...edit
}
this.$refs['edit'].getPatch() // 获取补丁数据
}, 800)
},
回显的逻辑根据自己需求自己处理,这里只需知道要用到
if (edit.planStartData) {
edit.planStartData = new Date(edit.planStartData)
}