2011-05-03 37 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