2011-05-03 98 views
0

我有一個父JSP的代碼看起來像從包括JSP,我們如何訪問另一個聲明的變量包括JSP(同父)

<jsp:include page='a.jsp' flush='true'/> 
<jsp:include page='b.jsp' flush='true'/> 
<jsp:include page='c.jsp' flush='true'/> 

a.jsp有一個Java對象,我需要訪問在c.jsp

有沒有辦法做到這一點,而無需將任何代碼從a.jsp移動到父jsp?

這裏是a.jsp的樣子:

<%@ page import="com.xxx.yyy.myClass" %> 
<% 
    // Some processing here 
%> 
<table width="100%" cellspacing="0" class="scrollableTable"> 
    <thead> 
     <tr> 
     <% 
      // Some processing here 
      w_myObject = myAPI.getmyObject(param1, param2); 
      // Some processing here 
     %> 
     </tr> 
     <!-- Display contents of w_myObject in subsequent rows of this table, here --> 
    </thead> 
</table> 

我想訪問w_myObject在c.jsp

+0

我的意思是「對象」。 – zeiger 2011-05-03 15:58:08

+0

我用a.jsp的一些代碼編輯了這個問題。看一看。謝謝:) – zeiger 2011-05-03 16:06:22

回答

0

這是所有做與範圍。如果你的對象在請求範圍內,那麼它當然可以訪問。或者如果它在Session範圍內,它將有權訪問。但是,如果它處於PageContext範圍內,我相信它將會丟失,因爲每個jsp都會創建它自己的範圍。

所以我想說的是把對象放在請求範圍內,它將在所有JSP中可見。

**a.jsp** 
request.setAttribute("myObjectKey", w_myObject); 

**c.jsp** 
w_myObject = (TypeOfMyObject)request.getAttribute("myObjectKey"); 
+0

恩......你能告訴我該怎麼做嗎?請參閱問題中的代碼。謝謝! – zeiger 2011-05-03 17:39:44

+0

好的scriptlet並不好,所以你可能會想要在servlet的請求範圍內(而不是JSP)設置對象,然後通過JSTL或其他東西訪問它。然而在你的a.jsp中你想要做request.setAttribute(「myObjectKey」,w_myObject);並在c.jsp中做你想做的事w_myObject = request.getAttribute(「myObjectKey」);您需要投射。 – planetjones 2011-05-03 18:07:03

+0

謝謝@planetjones。將對象放在請求範圍中,就像您在示例代碼中顯示的那樣適用於我:) – zeiger 2011-05-04 10:13:13