我正在使用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。我忘记了什么,但我不知道它是什么。
非常感谢你的帮助。
答案 0 :(得分:1)
我明白了。 我必须为dateformat注册一个新的ParamConverterProvider。
JAXRSClientFactory.create(baseUrl, serviceClass, Arrays.asList(new JacksonJsonProvider(), new MyCustomDataParamConverter()));