2012-03-12 68 views
1

我已經看到與該主題相關的問題,但我找不到滿意的答案。請幫我用我的JSP代碼:如何從課堂內部引用非最終變量「out」?

<% 
     AsyncHttpClient asyncHttpClient = new AsyncHttpClient(); 
     Future<Integer> f = asyncHttpClient.prepareGet("http://www.ning.com/") 
      .execute(new AsyncCompletionHandler<Integer>(){ 

     public STATE onStatusReceived(HttpResponseStatus respstat)throws Exception{ 
        ***//error occurs in next line*** 
      out.println(respstat.getStatusText()); 
      return STATE.CONTINUE; 
     } 
     @Override 
     public Integer onCompleted(Response response) throws Exception{ 
      // Do something with the Response 
      out.println(response.getStatusCode()); 
      return response.getStatusCode(); 
     } 

     @Override 
     public void onThrowable(Throwable t){ 
      // Something wrong happened. 
     } 
    }); 
    %> 

因爲out是一個jsp變量,所以我不能將它定義爲final。我在這種情況下做什麼?

感謝

回答

4
<% 
     final ServletOutputStream finalOut = out; // create final reference 

     AsyncHttpClient asyncHttpClient = new AsyncHttpClient(); 
     Future<Integer> f = asyncHttpClient.prepareGet("http://www.ning.com/") 
      .execute(new AsyncCompletionHandler<Integer>(){ 

     public STATE onStatusReceived(HttpResponseStatus respstat)throws Exception{ 
        ***//error occurs in next line*** 
      finalOut.println(respstat.getStatusText()); //use final reference 
      return STATE.CONTINUE; 
     } 
     @Override 
     public Integer onCompleted(Response response) throws Exception{ 
      // Do something with the Response 
      out.println(response.getStatusCode()); 
      return response.getStatusCode(); 
     } 

     @Override 
     public void onThrowable(Throwable t){ 
      // Something wrong happened. 
     } 
    }); 
    %> 
相關問題