2012-08-13 49 views
2

我的休息cxf服务的类实体有一个Date字段。从抛弃JsonProvider格式为:为什么cxf jax-rs日期字段序列化冒号?

"date":"2012-08-13T16:40:07.281-03:00"

但从GSON客户端它的格式为ISO8601合规性(没有冒号时区)为:

"date":"2012-08-13T16:40:07.281-0300"

jettison jax-rs发生了什么?

CXF Jettison中有没有简单的方法来指定日期时区格式?

感谢

回答

2

您可以使用org.apache.cxf.jaxrs.ext.ParameterHandler:

@Component 
public class DateHandler implements ParameterHandler<Date> { 

     public Date fromString(String s) { 
      DateTimeFormatter fmt = ISODateTimeFormat.dateTime(); 
      return fmt.parseDateTime(s).toDateTime(DateTimeZone.UTC).toDate(); 
     } 
} 

而它的构造,必须要有ServerFactoryBean的保持。这可以在Spring中用XML配置来完成,并且可以使用Spring Java配置来实现。我用过Spring Java配置。

@Bean 
public List<Object> jaxRSProviders() { 
    return new ArrayList<>(Arrays.asList(Your other providers, e.g. error handlers, fault barriers 
      dateHandler)); 
} 

JAXRSServerFactoryBean factory = ... 
providers.addAll(jaxRSProviders); 
factory.create(); 
+0

- 感谢您的建议。这是我的老问题。在那段时间,我通过使用cxf处理程序/拦截器解决了它,并在发送operation.thanks之前的时间部分之间插入冒号。 – Alexander 2014-06-02 18:57:01

0

@ user1036 - 谢谢你advice.This是我的老issue.In那些时间,我利用CXF处理器/拦截解决它与时间部分之间插入冒号之前发送operation.thanks。

相关问题