@DateTimeFormat 注释在 Spring 控制器中不起作用
@DateTimeFormat annotation not working in Spring Controller
我正在关注 Spring 文档 4。根据其指南,我成功地收集了格式正确的日期字段。
控制器 Class 是
@Controller
public class HomeController{
@RequestMapping("/home")
public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response) throws Exception {
return new ModelAndView("page1", "myForm", new MyForm());
}
}
MyForm Class 有一个字段 date 用 @DateTimeFormat
注释
public class MyForm{
@NumberFormat(style = Style.CURRENCY)
private Double value = 50.00;
@DateTimeFormat(pattern = "dd/MM/yyyy")
private Date date = new Date();
@NumberFormat(style = Style.CURRENCY)
public Double getValue() {
return value;
}
@DateTimeFormat(pattern = "dd/MM/yyyy")
public Date getDate() {
return date;
}
}
获取此 myForm 对象并评估格式正确 日期 字段值的JSP 代码是
<spring:eval expression="myForm.date"/>
至此一切都是正确的。但是当我尝试在 Spring Controller class
中使用 date 字段时
@Controller
public class HomeController {
@DateTimeFormat(pattern = "dd/MM/yyyy")
private Date date;
@RequestMapping("/home")
public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response) throws Exception {
date = new Date();
return new ModelAndView("page1", "date", getDate());
}
@DateTimeFormat(pattern = "dd/MM/yyyy")
public Date getDate() {
return date;
}
}
获取此 myForm 对象并计算格式不正确 日期 字段值的JSP 代码是
<spring:eval expression="date"/>
它仍然显示日期但不格式化。请解释为什么它格式化 MyForm Class 中的字段而不是 Controller 中的字段。
POJO MyForm 在提交表单时由 Spring 框架本身填充。 Spring 获取请求参数,转换为正确的格式并填充空 POJO 的字段,但如果您手动调用由 @DateTimeFormat
注释的方法,则它不会按预期工作。
您必须在控制器中使用 java SimpleDateFormat
or joda DateTime
。
我正在关注 Spring 文档 4。根据其指南,我成功地收集了格式正确的日期字段。 控制器 Class 是
@Controller
public class HomeController{
@RequestMapping("/home")
public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response) throws Exception {
return new ModelAndView("page1", "myForm", new MyForm());
}
}
MyForm Class 有一个字段 date 用 @DateTimeFormat
注释public class MyForm{
@NumberFormat(style = Style.CURRENCY)
private Double value = 50.00;
@DateTimeFormat(pattern = "dd/MM/yyyy")
private Date date = new Date();
@NumberFormat(style = Style.CURRENCY)
public Double getValue() {
return value;
}
@DateTimeFormat(pattern = "dd/MM/yyyy")
public Date getDate() {
return date;
}
}
获取此 myForm 对象并评估格式正确 日期 字段值的JSP 代码是
<spring:eval expression="myForm.date"/>
至此一切都是正确的。但是当我尝试在 Spring Controller class
中使用 date 字段时@Controller
public class HomeController {
@DateTimeFormat(pattern = "dd/MM/yyyy")
private Date date;
@RequestMapping("/home")
public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response) throws Exception {
date = new Date();
return new ModelAndView("page1", "date", getDate());
}
@DateTimeFormat(pattern = "dd/MM/yyyy")
public Date getDate() {
return date;
}
}
获取此 myForm 对象并计算格式不正确 日期 字段值的JSP 代码是
<spring:eval expression="date"/>
它仍然显示日期但不格式化。请解释为什么它格式化 MyForm Class 中的字段而不是 Controller 中的字段。
POJO MyForm 在提交表单时由 Spring 框架本身填充。 Spring 获取请求参数,转换为正确的格式并填充空 POJO 的字段,但如果您手动调用由 @DateTimeFormat
注释的方法,则它不会按预期工作。
您必须在控制器中使用 java SimpleDateFormat
or joda DateTime
。