GWT中的本地请求上下文

时间:2012-05-29 12:21:32

标签: gwt thread-local thread-local-storage

在Java中,有ThreadLocal,它可用于将一些数据从一个对象传送到另一个对象,而无需作为方法参数显式传递。

我需要拦截GWT请求并从中提取自定义HTTP标头,然后我需要以某种方式存储标头值以便稍后处理。

问题在于提取标头的位置属于RequestBuilder,并且没有办法(?)将变量从RequestBuilder传递到实际处理来自服务器的请求/响应的自定义代码。并且不可能将一些变量从客户端代码传递给该请求构建器。

ThreadLocal可能是解决方案,但它在GWT中不可用。有什么我可以用的吗?

1 个答案:

答案 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");
    }
});