我的 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 中是否有任何简单的方法来指定日期时区格式?
谢谢
我的 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 中是否有任何简单的方法来指定日期时区格式?
谢谢
您可以使用 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();
@ user1036 - 谢谢你的建议。这是我的老问题。在那段时间里,我通过使用 cxf 处理程序/拦截器解决了它,并在发送操作之前的时间部分之间插入冒号。谢谢。