我有一个要求,即REST消费者将在客户端或消费者的语言环境中发送日期数据。 HTTP标头将配置为发送客户端区域设置信息。
REST服务器实现需要处理Http标头并将日期从客户端语言环境转换为UTC格式,并将日期存储到数据库中。
类似地,当存在日期字段时返回响应时,预期反向操作。这将确保消费者看到客户输入的相同日期。
我想知道如何访问HTTPRequest对象或将自定义参数传递给我实现的JSONSerializer和JSONDeserializer。
答案 0 :(得分:0)
我认为您可以使用ThreadLocal变量来保存ServletRequest的信息,然后在任何地方使用它。例如:
在您的过滤器中获取您需要的信息
public class YourFilter implements Filter {
private static final ThreadLocal<String> _date = new ThreadLocal<>();
public static ThreadLocal<String> getDate() {
return _date;
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
//....
//other code
//get the date from request
Date date = request.xxxxxx();
//set the date to the local thread variable
_date.set(date);
}
}
使用JSONSerializer中的ThreadLocal变量
@Override
public void serialize(String resourceIdMsg,
JsonGenerator jsonGenerator,
SerializerProvider serializerProvider)
throws IOException {
String date = YourFilter.getDate().get();
}