2016-07-21 1 views
2

у меня есть геттер/сеттер для переменной Date, например, так:Пользовательских Struts преобразователя типа не работает

private Date registrationDate; 

@TypeConversion(converter = "org.com.helper.DataHelper") 
public Date getRegistrationDate() { 
    return registrationDate; 
} 

@TypeConversion(converter = "org.com.helper.DataHelper") 
public void setRegistrationDate(Date registrationDate) { 
    this.registrationDate = registrationDate; 
} 

Как вы можете видеть, я создал пользовательские struts конвертер для преобразования входящей строки Date, а затем назначьте его. Но, похоже, это не работает. Вот код для DateHelper:

public class DateHelper extends StrutsTypeConverter { 

    private static final DateFormat FORMAT = new SimpleDateFormat("dd-MM-yyyy"); 

    @Override 
    public Object convertFromString(Map arg0, String[] values, Class arg2) { 
      try { 
       System.out.println(values[0]+"called from datahelper"); 

       return FORMAT.parse(values[0]); 
      } catch (Exception e) { 
       throw new TypeConversionException(e.getMessage()); 
      } 
    } 

    @Override 
    public String convertToString(Map arg0, Object value) { 
     try { 
      return FORMAT.format(value); 
     } catch (Exception e) { 
      throw new TypeConversionException(e.getMessage()); 
     } 
    } 

} 

Я использую struts2-json плагин, чтобы получить и проанализировать данные формы. Этот плагин автоматически присваивает все строковые значения, но у меня есть проблема с Date.

Вот как я получаю данные, переданные Java из формы.

{"data":{"recordId":"123","registrationDate":"20-07-2016","hisId":"","herId":"","lastNameHe":"Asd","firstNameHe":"Asd","middleNameHe":"Asd","workPlaceHe":"","educationHe"}} 

Так, согласно моему пониманию кода перед началом установки registrationDate должен вызывать вспомогательный класс и преобразовать строку в date, а затем вызвать registrationDate сеттер .. но это не похоже на работу .. Я даже поместил вызов log в вспомогательный код, но он не отображается в затмении.

ответ

2

Похоже, что struts2-json-plugin не использует преобразования по умолчанию. :(

Для установки формата даты можно использовать @JSON аннотацию, которая имеет свойство format

@JSON(format = "dd.MM.yyyy") 
public void setRegistrationDate(Date registrationDate) { 
    this.registrationDate = registrationDate; 
} 

JSON плагин документация -.. Customizing Serialization and Deserialization

+0

Ой, я вижу ... это странно, что ОП является сначала заметив это, затем :) Хорошо Q & A –

+0

@AndreaLigios Да, json плагин должен быть действительно реорганизован. –

+0

говорится: «JSON не может быть разрешен для типа», и для меня нет доступных библиотек для импорта. Он предлагает использовать jacksonview .. – Daler

Смежные вопросы