2012-05-29 6 views
0

В Java существует ThreadLocal, который может использоваться для переноса некоторых данных из одного объекта в другой без явной передачи в качестве аргумента метода.Локальный контекст запроса в GWT

Мне нужно перехватить запрос GWT и извлечь из него пользовательский HTTP-заголовок, после чего мне нужно сохранить значение заголовка как-то для обработки позже.

Проблема в том, что место для извлечения заголовка принадлежит RequestBuilder, и нет способа (?) Передать переменную из RequestBuilder в пользовательский код, фактически обрабатывающий запрос/ответ от сервера. И невозможно передать некоторую переменную из кода клиента в этот конструктор запросов.

ThreadLocal может быть решением, однако оно недоступно в GWT. Есть ли что-то, что я могу использовать?

ответ

0

Вы можете использовать RequestBuilder.setHeader для установки значений заголовков для вашего HTTP-запроса.
На бэкэнд вы можете использовать HttpServletRequest вашего сервлета для извлечения значений заголовков из вашего HTTP-запроса.

Update:

Некоторые класса с статической переменной экземпляра:

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"); 
    } 
}); 
+0

мне нужно ThreadLocal в GWT, если он отправляется на сервер, не решает проблему – jdevelop

+0

Можете ли вы опубликовать некоторый код, чтобы сделать вопрос понятным. В javascript-коде нет нитей и, таким образом, в GWT не существует ThreadLocal. Однако вы можете использовать статическую переменную экземпляра для хранения значений, а затем получить доступ к ней из другого места. –

+0

Я хотел извлечь некоторый заголовок из ответа HTTP с помощью RequestBuilder и поместить его в некоторую переменную, поэтому AsyncCallback (который будет выполнен кодом GWT) будет иметь доступ к переменной. – jdevelop