在Java中,有ThreadLocal,它可用于将一些数据从一个对象传送到另一个对象,而无需作为方法参数显式传递。
我需要拦截GWT请求并从中提取自定义HTTP标头,然后我需要以某种方式存储标头值以便稍后处理。
问题在于提取标头的位置属于RequestBuilder,并且没有办法(?)将变量从RequestBuilder传递到实际处理来自服务器的请求/响应的自定义代码。并且不可能将一些变量从客户端代码传递给该请求构建器。
ThreadLocal可能是解决方案,但它在GWT中不可用。有什么我可以用的吗?
答案 0 :(得分:0)
您可以使用RequestBuilder.setHeader为HTTP请求设置标头值 在后端,您可以使用servlet的HttpServletRequest从HTTP请求中检索标头值。
<强>更新强>:
某个带有静态实例变量的类:
public class SomeClass {
public static String myVar;
}
在RequestBuilder代码中,您可以执行以下操作:
RequestBuilder request = new RequestBuilder(url);
request.setCallback(new RequestCallback() {
@Override
public void onResponseReceived(Request request, Response response) {
SomeClass.myVar = response.getHeader("someheader");
}
});