【问题标题】:Local request context in GWTGWT 中的本地请求上下文
【发布时间】:2012-05-29 12:21:31
【问题描述】:

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

    您可以使用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");
        }
    });
    

    【讨论】:

    • 我需要 GWT 中的 ThreadLocal,将其发送到服务器并不能解决问题
    • 您能否发布一些代码以使问题更清楚。 javascript 代码中没有线程,因此 GWT 中没有 ThreadLocal。但是,您可以使用静态实例变量来存储值,然后从其他地方访问它。
    • 我想使用 RequestBuilder 从 HTTP 响应中提取一些标头并将其放入某个变量中,因此 AsyncCallback(将由 GWT 代码执行)将可以访问该变量。
    猜你喜欢
    • 1970-01-01
    • 2022-01-02
    • 2022-01-07
    • 1970-01-01
    • 2016-04-06
    • 2020-12-25
    • 1970-01-01
    • 2019-05-10
    • 1970-01-01
    相关资源
    最近更新 更多