Apache-cxf JAXRSClient自定义Dateformat

时间:2017-04-20 15:22:26

标签: java apache jax-rs cxf simpledateformat

我正在使用apache-cxf-jaxrs和Proxy-Pattern。但是我无法更改查询参数的日期格式。

有我的界面:

@Path("/api/data")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public interface DataService {

 @GET
 @Path("/")
 List<DataDto> getData(@JsonFormat(pattern = "yyyyMMdd") @QueryParam("from") Date from);
}

客户初始化:

JacksonJsonProvider jsp = new JacksonJsonProvider();
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setDateFormat(new SimpleDateFormat("yyyyMMdd"));       
jsp.setMapper(objectMapper);
DataService  serviceClient = (DataService) 
JAXRSClientFactory.create(baseUrl, serviceClass, Arrays.asList(jsp));

调用以下代码会导致后端出现java.time.format.DateTimeParseException,因为Date格式为DateFormat.DEFAULT而不是&#34; yyyyMMdd&#34;。

  serviceClient.getData(new Date());

从不使用带有SimpleDateFormatter的我的ObjectMapper。我忘记了什么,但我不知道它是什么。

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:1)

我明白了。 我必须为dateformat注册一个新的ParamConverterProvider。

JAXRSClientFactory.create(baseUrl, serviceClass, Arrays.asList(new JacksonJsonProvider(), new MyCustomDataParamConverter()));