Java 在PropertyEditorSupport和@Initbinder中生成日期为的getAsText()
我需要将模式为“yyyy-MM-dd”的日期转换为字符串格式“dd.MM.yyyy”。现在我有了这个。方法getAsText()在setAsText工作时不工作。我做错了什么 DateEditor.javaJava 在PropertyEditorSupport和@Initbinder中生成日期为的getAsText(),java,date,simpledateformat,propertyeditor,spring-mvc-initbinders,Java,Date,Simpledateformat,Propertyeditor,Spring Mvc Initbinders,我需要将模式为“yyyy-MM-dd”的日期转换为字符串格式“dd.MM.yyyy”。现在我有了这个。方法getAsText()在setAsText工作时不工作。我做错了什么 DateEditor.java @Component public class DateEditor extends PropertyEditorSupport { @Override public void setAsText(String value) { try {
@Component
public class DateEditor extends PropertyEditorSupport {
@Override
public void setAsText(String value) {
try {
setValue(new SimpleDateFormat("yyyy-MM-dd").parse(value));
} catch (Exception ex) {
setValue(null);
}
}
@Override
public String getAsText() {
String sdf = "";
try {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
dateFormat.setLenient(true);//-
Date date = dateFormat.parse((String) getValue());
sdf = new SimpleDateFormat("dd.MM.yyyy").format(date);
System.out.println(sdf);
} catch (ParseException p) {}
return sdf;
}
}
Initbinder
@InitBinder
public void initBinder(WebDataBinder dataBinder) {
dataBinder.registerCustomEditor(Date.class,new DateEditor());
}
定义它如何“不工作”。我可以想出几种方法来打破这一点,我不想把它们全部列出。它只是打印第一个日期格式,而不是转换。p、 printStackTrace();不显示任何内容我建议您不要使用
SimpleDateFormat
和Date
。这些类设计得很糟糕,而且早已过时,其中前者尤其令人讨厌。相反,使用来自的LocalDate
和DateTimeFormatter
。可能不执行此方法,但原因是什么?您是否可以清楚地说明预期结果、观察到的结果以及它们之间的区别?我认为这将大大有助于回答这个问题。定义它如何“不起作用”。我可以想出几种方法来打破这一点,我不想把它们全部列出。它只是打印第一个日期格式,而不是转换。p、 printStackTrace();不显示任何内容我建议您不要使用SimpleDateFormat
和Date
。这些类设计得很糟糕,而且早已过时,其中前者尤其令人讨厌。相反,使用来自的LocalDate
和DateTimeFormatter
。可能不执行此方法,但原因是什么?您是否可以清楚地说明预期结果、观察到的结果以及它们之间的区别?我认为这将大大有助于回答这个问题。