Как мне преобразовать даты в struts2, которые не находятся в коротком формате?

#java #struts2

#java #struts2

Вопрос:

Я знаю, что struts2 может преобразовывать строки в даты при заполнении полей моего контроллера, однако это делается при условии, что строка даты находится в КОРОТКОМ формате. Есть ли способ указать другой формат для использования struts (например, ‘гггг-ММ-дд’)?

Ответ №1:

Вам нужно создать свой собственный конвертер CustomType, который может изменять заданную дату в любой формат. Что-то вроде

 public class MyDateConvertor extends StrutsTypeConverter {
     public Object convertFromString(Map context, String[] values, Class 
toClass) {
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
          try {
              Date date = (Date) sdf.parse(values[0]);
              return new java.sql.Date(date.getTime()) ;
          } catch (ParseException e) {
              return values[0];
          }
      }

      public String convertToString(Map context, Object o) {
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
         return sdf.format(o);
      }
  }
  

Вы можете получить более подробную информацию из официальных документов Struts2, и вот подробности

Преобразование пользовательских типов Struts2