2013-03-04 42 views
4

我的Web应用程序使用struts2-json-plugin-2.2.1org.apache.struts2.json.annotations.JSON没有显示正确的格式

我有一个公开的数据库加载(通过Hibernate)对象的动作。

这个对象包含了如此注解一个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

btw我确认我的问题的起源。 正如我之前所说,它驻留在使用的代理类中。 在我的情况 - 如果我** **负载对象(通过Hibernate),那么所使用的代理是$$ _ Javassist是 - 如果我** **获取该对象(通过Hibernate),那么物体ISN” t代理,然后JSonWriter可以恢复注释 - >因此它能够按照我已注释的格式进行格式化 – Ans 2013-03-05 12:18:10

回答

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 2013-03-05 10:57:54