私はJodaとLocal Dateを使用しています。私は、カスタムプロパティエディタを作成し、それは"23-05-2017"
のように、ビューから正しい値を受信するが、私はそれを解析しようとするとき、私は得る:プロパティエディタJoda LocalDateの例外
LocalDatePropertyEditor - Error Conversione DateTime
java.lang.IllegalArgumentException: Invalid format: "23-05-2017" is malformed at "-05-2017"
これは私のカスタムエディタです:
public class LocalDatePropertyEditor extends PropertyEditorSupport{
private final DateTimeFormatter formatter;
final Logger logger = LoggerFactory.getLogger(LocalDatePropertyEditor.class);
public LocalDatePropertyEditor(Locale locale, MessageSource messageSource) {
this.formatter = DateTimeFormat.forPattern(messageSource.getMessage("dateTime_pattern", new Object[]{}, locale));
}
public String getAsText() {
LocalDate value = (LocalDate) getValue();
return value != null ? new LocalDate(value).toString(formatter) : "";
}
public void setAsText(String text) throws IllegalArgumentException {
LocalDate val;
if (!text.isEmpty()){
try{
val = DateTimeFormat.forPattern("dd/MM/yyyy").parseLocalDate(text);
setValue(val);
}catch(Exception e){
logger.error("Errore Conversione DateTime",e);
setValue(null);
}
}else{
setValue(null);
}
}
}
と内部コントローラを登録しました:
@InitBinder
protected void initBinder(final ServletRequestDataBinder binder, final Locale locale) {
binder.registerCustomEditor(LocalDate.class, new LocalDatePropertyEditor(locale, messageSource));
}
どうすればこのエラーを修正できますか?