2013-12-11 70 views
0

我有一個servlet,我想從它向一個jsp文件發送數據:Servlet的不發送對JSP頁面屬性

 String errmsg = "Services not available!"; 
     request.setAttribute("errmsg",errmsg); 
     request.getRequestDispatcher("/WEB-INF/web/csrCustomerLists/custListDetails.jsp").forward(request, response); 

可悲的是,該屬性沒有在文件中設置,我在接受空JSP。我已經嘗試了兩種方式:

 <div> <% String message = (String) request.getAttribute("errmsg");</div> 
             out.println("Servlet communicated message to JSP: "+ message);%> 
     <div>Try no:2<c:out value="${errmsg}"/></div> 

我檢查與螢火蟲,我得到這個:提前

Servlet communicated message to JSP: null 

感謝。

更新: 我設法畢竟一個錯誤:

java.lang.IllegalStateException:隱變量[javax.portlet.response]不是在請求上下文中可用。

+0

你用什麼URL查看值?它是servlet URL還是JSP URL? – Masudul

+0

我使用JSP URL來查看值 –

+0

那麼,有沒有可能取代/包裝原始請求的過濾器?你可以調試它並記錄兩個地方的請求實例的哈希碼,並檢查它們是否引用同一個對象。 – Merlin

回答

0

以另一種方式

嘗試通過在會議

保持這些值語法session.setAttribute("errmsg",errmsg);和檢索session.getAttribute("errmsg");

在servlet的做這樣的

HttpSession session =request.getSession(); 
session.setAttribute("errmsg",errmsg); 

,並在jsp頁面只需做session.getAttribute("errmsg");

+0

你指的是這種語法? 'request.getSession()。setAttribute' –

+0

@RazvanN查看我的更新回答 – SpringLearner

+0

感謝您的回答,但它仍然收到null .. –

0

您得到null,因爲您使用了JSP頁面URL,其中值尚未設置。您應該使用servlet URL來查看值。因爲,值應該從Servlet傳遞給JSP。所以您的網址應該是這樣的:

http://localhost:8080/AppName/ServletURL // After hit this URL 
      |         // value will be forwarded to JSP 
      | 
      | 
http://localhost:8080/AppName/MyJSP.jsp // this will be invoked with 
             // requestDispatcher.forward 
+0

那麼它應該如何發送數據到jsp?因爲我需要它.. –

+0

@RazvanN,在打開Servlet URL後,它將被轉發到具有值的JSP頁面。 – Masudul

+0

好的,謝謝,我會嘗試這種方式 –

0

貌似問題就在這裏

<div> <% String message = (String) request.getAttribute("errmsg");</div> 

你必須正確地關閉小腳本。試試這個:

<div> 
<% String message = (String) request.getAttribute("errmsg"); 
out.println("Servlet communicated message to JSP: "+ message);%> 
</div> 
+0

謝謝,這不是問題.. –