我将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,因为日期列表的格式是DateFormat.DEFAULT,而不是"yyyyMMdd“。
serviceClient.getData(new Date());我的带有SimpleDateFormatter的ObjectMapper从未被使用过。我确实忘了一件事,但我不知道是什么。
非常感谢你的帮助。
发布于 2017-04-21 14:38:57
这样啊,原来是这么回事。我必须为日期格式注册一个新的ParamConverterProvider。
JAXRSClientFactory.create(baseUrl, serviceClass, Arrays.asList(new JacksonJsonProvider(), new MyCustomDataParamConverter()));https://stackoverflow.com/questions/43523707
复制相似问题