2016-07-21 32 views
2

Ich habe eine Getter/Setter für die Date Variable, etwa so:Benutzerdefinierte Struts Wandler arbeitet nicht

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; 
} 

Wie man sehen kann ich einen benutzerdefinierten struts Konverter erstellt haben die ankommende Zeichenfolge zu konvertieren das Format Date und dann zuweisen. Aber es scheint nicht zu funktionieren. Hier ist der Code für 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()); 
     } 
    } 

} 

Ich benutze struts2-json Plugin zu erhalten und die Formulardaten zu analysieren. Dieses Plugin weist automatisch alle Zeichenfolgenwerte zu, aber ich habe ein Problem mit der Date.

So bekomme ich die aus dem Formular an Java übermittelten Daten.

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

Also, nach meiner den Code zu verstehen, bevor Sie die registrationDate sollten die Helfer Klasse aufrufen und konvertieren die Zeichenfolge date und rufen dann die registrationDate Setter zu setzen beginnen .. aber es scheint nicht zu arbeiten .. Ich habe sogar einen log Aufruf in den Helfer-Code, aber es erscheint nicht in der Eclipse.

Antwort

2

Scheint wie struts2-json-plugin verwendet keine Standard-Typ-Konvertierungen. :(

Für Datumsformat Einstellung @JSON Annotation verwenden können, die format Eigenschaft hat

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

JSON-Plugin Dokumentation -.. Customizing Serialization and Deserialization

+0

Ooh, ich sehe ... es ist seltsam, dass die OP ist die Der erste bemerkt es dann :) Gute Fragen und Antworten –

+0

@AndreaLigios Ja, json plugin sollte wirklich refaktoriert werden. –

+0

es sagt "JSON kann nicht zu einem Typ aufgelöst werden" und es gibt keine verfügbaren Bibliotheken für mich zu importieren. Es schlägt vor, jacksonview zu verwenden. – Daler