2

我的 rest cxf 服务的类实体有一个 Date 字段。Jettison JsonProvider 的格式为:

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

但从 Gson 客户端,它被格式化为符合 iso8601(没有冒号时区)为:

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

抛弃 jax-rs 发生了什么?

CXF Jettison 中是否有任何简单的方法来指定日期时区格式?

谢谢

4

2 回答 2

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();
于 2014-06-01T13:17:38.760 回答
0

@ user1036 - 谢谢你的建议。这是我的老问题。在那段时间里,我通过使用 cxf 处理程序/拦截器解决了它,并在发送操作之前的时间部分之间插入冒号。谢谢。

于 2014-06-02T18:56:27.650 回答