2012-05-29 2 views
0

Java에서는 메서드 인수로 명시 적으로 전달하지 않고도 한 개체에서 다른 개체로 데이터를 전달하는 데 사용할 수있는 ThreadLocal이 있습니다.GWT의 로컬 요청 컨텍스트

GWT 요청을 가로 채서 사용자 지정 HTTP 헤더를 추출해야합니다. 그런 다음 헤더 값을 나중에 처리해야합니다.

문제는 헤더를 추출 할 곳이 RequestBuilder에 속하므로 RequestBuilder에서 변수를 서버의 요청/응답을 실제로 처리하는 사용자 정의 코드로 전달하는 방법 (?)이 없다는 것입니다. 그리고 클라이언트 코드의 일부 변수를 요청 빌더로 전달할 수 없습니다.

ThreadLocal이 솔루션 일 수 있지만 GWT에서는 사용할 수 없습니다. 내가 사용할 수있는 것이 있습니까?

답변

0

RequestBuilder.setHeader을 사용하여 HTTP 요청의 헤더 값을 설정할 수 있습니다.
백엔드에서 서블릿의 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"); 
    } 
}); 
+0

내가 GWT에서의 ThreadLocal가 필요, 서버로 보내어도 문제가 해결되지 않음 – jdevelop

+0

질문을 명확하게하기 위해 몇 가지 코드를 게시 할 수 있습니까? 자바 스크립트 코드에는 스레드가 없으므로 GWT에 ThreadLocal이 없습니다. 그러나 정적 인스턴스 변수를 사용하여 값을 저장 한 다음 다른 인스턴스에서 액세스 할 수 있습니다. –

+0

RequestBuilder에서 HTTP 응답의 일부 헤더를 추출하여 일부 변수에 넣으므로 AsyncCallback (GWT 코드에 의해 실행 됨)에서 변수에 액세스 할 수 있습니다. – jdevelop