0

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

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

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

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

4

1 回答 1

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");
    }
});
于 2012-05-30T09:23:35.293 回答