從前端頁面要透過url參數傳遞日期至Spring MVC的@ModelAttribute
參數,而該Model物件的屬性為java.util.Date
,則日期成員變數前可加上@DateTimeFormat
並根據前端傳來的格式設定pattern
屬性,
例如下面是@ModelAttribute
的參數Model物件Person
public class Person {
private String name;
@DateTimeFormat(pattern="yyyy-MM-dd") // 設定接收日期參數格式
private Date birthday; // 用來接收Date參數
public String getName() {
return name;
}
public void setName(String name){
this.name = name;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday){
this.birthday = birthday;
}
}
Spring MVC Controller 用來接收Request的method
@RequestMapping(value = "/edit")
public ModelAndView edit(@ModelAttribute("person") Person person) {
Map() model = new HashMap();
model.put("model", person);
return ModelAndView("edit", model);
}
則在url傳遞日期可使用yyyy-mm-dd
的格式。
var url = contextPath + "edit?name=John&birthday=1985-03-13";
如果參數是使用@RequestParam
來接,也可在傳入的參數使用@DateTimeFormat
@RequestMapping(value = "/edit")
public ModelAndView edit(
@RequestParam("name") String name,
@RequestParam("birthday") @DateTimeFormat(pattern="yyyy/MM/dd") Date birthday) { // highlight.js 顏色跑掉了...
// ...
}
或在Controller使用@InitBinder
@InitBinder("person") // "person"即為@ModelAttribute的"person"
public void personBinding (WebDataBinder binder) {
SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd");
format.setLenient(false);
binder.registerCustomEditor(Date.class, "birthday", new CustomDateEditor(format, true)); // "birthday"為Person的成員變數birthday
}
@RequestMapping(value = "/edit")
public ModelAndView edit(@ModelAttribute("person") Person person) {
Map() model = new HashMap();
model.put("model", person);
return ModelAndView("edit", model);
}
如果覺得文章有幫助的話還幫忙點個Google廣告,感恩。
參考:
沒有留言:
張貼留言