我需要转换从REST服务接收的客户端LocalDate以JSON形式。我读了一下ParameterHandler,但看起来它只适用于REST资源方法,即服务器端。是否有任何东西可以在客户端转换LocalDate。
我尝试实现ParameterHandler并在jaxrs:client providers中注册它。我可以看到构造函数被调用,但不是方法fromString。我错过了什么吗?以下是我的实施:
public class JavaLocalDateParamHandler implements ParameterHandler<LocalDate>{
public JavaLocalDateParamHandler() {
System.out.println("defualt constr....");
}
@Override
public LocalDate fromString(String s) {
try{
return LocalDate.parse(s);
}
catch(IllegalArgumentException e){
throw new RuntimeException("Failed to parse param to java.time.LocalDate, param:" +s,e);
}
}
}
客户端存根文件:
<jaxrs:client id="serviceClient"
serviceClass="pckge.RESTService"
username="abc"
password="paswswrd"
address="service URL">
<jaxrs:features>
<bean class="org.apache.cxf.transport.common.gzip.GZIPFeature"/>
<cxf:logging/>
</jaxrs:features>
<jaxrs:providers>
<bean class="pckg2.JavaLocalDateParamHandler" />
<bean class="org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider"/>
</jaxrs:providers>
</jaxrs:client>
请注意,我可以获取JSON字符串如果我直接从浏览器调用资源。唯一的问题是我的JavaLocalDateParamHandler fromString方法在转换期间不会被调用。
它是否仅在服务器端工作,其中提供了REST资源(即带有diff注释的方法)?