2013-03-04 1 views
4

Мой веб-приложение использует struts2-json-plugin-2.2.1org.apache.struts2.json.annotations.JSON не показывает правильный формат

У меня есть действие, которое обнажает объект загружается из БД (через спящий режим).

Этот объект содержит поле java.util.Date, который так аннотированный:

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

Вместо того, чтобы:

"dataCreazione":"15-02-2013" 

я получаю это:

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

В отлаживать Я замечаю, что класс org.apache.struts2.json.JSONWriter не находит никакой аннотации по методу getDataCreazione и что прокси класс имеет "$$_javassist" типа, а не "$$EnhancerByCGLIB$$", как и другие случаи ...

В одном приложении у меня есть много этой ситуации и аннотаций работает отлично. Я не понимаю, в чем проблема (или разница) с другими классами.

Есть ли у вас какие-либо предложения?

+0

Ответ подтверждаю происхождение моей проблемы. Как я уже говорил, он находится в прокси-классе, который используется. В моем случае - если я ** нагрузка ** объект (через спящий режим), то прокси-сервер используется $$ _ Javassist - если я ** ** получить объект (через спящий режим), то объект ISN» t прокси, а затем JSonWriter может возобновить аннотацию ->, чтобы он мог форматировать, поскольку я аннотировал – Ans

ответ

0

btw Я подтверждаю происхождение моей проблемы. Как я уже говорил, он находится в прокси-классе, который используется. В моем случае - если я загружаю объект (через спящий режим), тогда используемый прокси-сервер - $$ _ javassist - если я получает объект (через спящий режим), тогда объект не проксирован, а затем JSonWriter может возобновить аннотацию - >, поэтому он может форматировать, поскольку я аннотировал -

0

Вы не указали name атрибута аннотации. По умолчанию аннотации с пустыми именами не десериализуются. Для получения дополнительной информации см. Apache docs.

+0

. Конечно, по умолчанию плагин десериализует каждое поле со своим именем. Тег «имя», о котором вы упоминали, используется для переименования определенного имени поля. Например: '@JSON (name =" newName4Field2 ") public String getField2() { return field2; } ' будет генерировать это ' {"field1": "FIELD_1", "newName4Field2": "FIELD_2", "testDate": "05-03-2013"} ' – Ans