如何Date
使用 Spring MVC 在文本字段中设置格式?
我正在使用 Spring Form 标签库和input
标签。
我现在得到的是这样的Mon May 28 11:09:28 CEST 2012
。
我想以dd/MM/yyyy
格式显示日期。
如何Date
使用 Spring MVC 在文本字段中设置格式?
我正在使用 Spring Form 标签库和input
标签。
我现在得到的是这样的Mon May 28 11:09:28 CEST 2012
。
我想以dd/MM/yyyy
格式显示日期。
在 yr 控制器中注册日期编辑器:
@InitBinder
protected void initBinder(WebDataBinder binder) {
binder.registerCustomEditor(LocalDate.class, new LocalDateEditor());
}
然后数据编辑器本身看起来像这样:
public class LocalDateEditor extends PropertyEditorSupport{
@Override
public void setAsText(String text) throws IllegalArgumentException{
setValue(Joda.getLocalDateFromddMMMyyyy(text));
}
@Override
public String getAsText() throws IllegalArgumentException {
return Joda.getStringFromLocalDate((LocalDate) getValue());
}
}
我正在使用我自己的抽象实用程序类(Joda)来解析日期,实际上是来自Joda Datetime 库的 LocalDates - 推荐为标准 java 日期/日历是可憎的,恕我直言。但你应该明白这一点。此外,您可以注册一个全局编辑器,因此您不必每个控制器都这样做(我不记得如何)。
完毕!我刚刚将此方法添加到我的控制器类中:
@InitBinder
protected void initBinder(WebDataBinder binder) {
SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
binder.registerCustomEditor(Date.class, new CustomDateEditor(
dateFormat, false));
}
如果您想格式化所有日期而不必在每个控制器中重复相同的代码,您可以在使用@ControllerAdvice注释的类中创建一个全局 InitBinder。
1.创建一个 DateEditor 类来格式化你的日期,像这样:
public class DateEditor extends PropertyEditorSupport {
public void setAsText(String value) {
try {
setValue(new SimpleDateFormat("dd/MM/yyyy").parse(value));
} catch(ParseException e) {
setValue(null);
}
}
public String getAsText() {
String s = "";
if (getValue() != null) {
s = new SimpleDateFormat("dd/MM/yyyy").format((Date) getValue());
}
return s;
}
2.创建一个带有@ControllerAdvice注解的类(我称之为GlobalBindingInitializer):
@ControllerAdvice
public class GlobalBindingInitializer {
/* Initialize a global InitBinder for dates instead of cloning its code in every Controller */
@InitBinder
public void binder(WebDataBinder binder) {
binder.registerCustomEditor(Date.class, new DateEditor());
}
}
3.在您的 Spring MVC 配置文件(例如 webmvc-config.xml)中添加允许 Spring 扫描您在其中创建 GlobalBindingInitializer 类的包的行。例如,如果您在 org.example.common 包中创建了 GlobalBindingInitializer:
<context:component-scan base-package="org.example.common" />
完成的!
资料来源: