2013-03-04 1 views
4

내 웹 응용 프로그램은 내가 (최대 절전 모드를 통해) DB에서로드 된 객체를 노출하는 행동을 struts2-json-plugin-2.2.1org.apache.struts2.json.annotations.JSON가 올바른 형식이 표시되지 않습니다

를 사용합니다. 얻는 대신

@JSON(format = "dd-MM-yyyy") 
    @Column(name = "DATA_CREAZIONE", nullable = false) 
    public Date getDataCreazione() { 
    return this.dataCreazione; 
    } 

:

이 객체는 이렇게 주석되는 java.util.Date 필드를 포함하는 디버그에서

"dataCreazione":"2013-02-15T16:51:06" 

:

"dataCreazione":"15-02-2013" 

나는이 얻을 org.apache.struts2.json.JSONWriter 클래스가 getDataCreazione 메소드에 대한 주석을 찾지 못했고 프록시 클래스 내가이 상황을 많이 가지고 동일한 응용 프로그램에서 "$$_javassist" 유형이 아닌 다른 경우로 "$$EnhancerByCGLIB$$" ...

이며 주석 잘 작동합니다. 다른 클래스와의 문제점 (또는 차이점)을 이해하지 못합니다.

의견이 있으십니까?

+0

btw 나는 내 문제의 기원을 확인합니다. 전에 말했듯이 그것은 사용되는 프록시 클래스에 있습니다. 내 경우 에서 - 난 ** 부하 ** (최대 절전 모드를 통해) 객체는 사용되는 프록시는 $$ _와 Javassist 경우 - 만약 I ** 얻을 ** (최대 절전 모드를 통해) 개체를 다음 개체의 ISN ' t 프록시 된 다음 JSonWriter는 주석을 다시 시작할 수 있습니다.> 따라서 주석을 달았을 때 형식을 지정할 수 있습니다. – Ans

답변

0

btw 본인은 문제의 근원을 확인합니다. 전에 말했듯이 그것은 사용되는 프록시 클래스에 상주합니다. 내 경우에는 로드 (최대 절전 모드를 통해) 다음 사용되는 프록시 다음 $ 012_ javassist - 얻을 경우 (최대 절전 모드) 다음 개체를 프록시 및 다음 JSonWriter 주석을 다시 시작할 수 있습니다 - > 그래서 주석을 달아서 포맷 할 수 있습니다 -

0

annotation 속성의 name을 지정하지 않았습니다. 기본적으로 빈 이름이있는 주석은 비 직렬화되지 않습니다. 자세한 내용은 Apache docs을 참조하십시오.

+0

기본적으로 플러그인은 모든 필드를 고유 한 이름으로 deserialize합니다. 언급 한 "name"태그는 특정 필드 이름의 이름을 바꾸는 데 사용됩니다. 예 : @@SON (name = "newName4Field2") public String getField2() { return field2; }' 이 생성됩니다 '{ "field1": "FIELD_1", "newName4Field2": "FIELD_2", "testDate": "05-03-2013"}' – Ans