Datetime 为什么cxf jax rs日期字段序列化有冒号?

Datetime 为什么cxf jax rs日期字段序列化有冒号?,datetime,serialization,cxf,jettison,Datetime,Serialization,Cxf,Jettison,rest cxf服务的my class entity有一个日期字段。抛弃JsonProvider的格式为: “日期”:“2012-08-13T16:40:07.281-03:00” 但在GSon客户端,它的格式符合iso8601标准(不带冒号时区),如下所示: “日期”:“2012-08-13T16:40:07.281-0300” 抛弃jax-rs发生了什么 在CXF抛弃中有没有简单的方法来指定日期时区格式 谢谢您可以使用org.apache.cxf.jaxrs.ext.ParameterHan

rest cxf服务的my class entity有一个日期字段。抛弃JsonProvider的格式为:

“日期”:“2012-08-13T16:40:07.281-03:00”

但在GSon客户端,它的格式符合iso8601标准(不带冒号时区),如下所示:

“日期”:“2012-08-13T16:40:07.281-0300”

抛弃jax-rs发生了什么

在CXF抛弃中有没有简单的方法来指定日期时区格式


谢谢

您可以使用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();
      }
}  
@组件
公共类DateHandler实现ParameterHandler{
公共日期fromString(字符串s){
DateTimeFormatter fmt=ISODateTimeFormat.dateTime();
返回fmt.parseDateTime.toDateTime(DateTimeZone.UTC.toDate();
}
}  
您必须在构建ServerFactoryBean时获得它。这可以在Spring的XML配置中完成,并且可以用SpringJavaConfig实现。我使用了SpringJava配置

@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();
@Bean
公共列表提供程序(){
返回新的ArrayList(Arrays.asList)(您的其他提供程序,例如错误处理程序、故障屏障
日期处理程序);
}
JAXRSServerFactoryBean工厂=。。。
addAll(jaxRSProviders);
factory.create();

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

-谢谢你的建议。这是我以前的问题。在那段时间里,我通过在发送之前使用cxf处理程序/拦截器和在时间段之间插入冒号来解决它手术,谢谢。