Unfortunately, you won't be able to use request scope for this.  The
reason is that, in a JSP 1.1 environment, <bean:include> has to internally
do a separate request in order to buffer the output.  Because it is a
separate request, request scope attributes are not shared.

Once we can migrate to Servlet 2.3 / JSP 1.2, it will be possible to
implement <bean:include> so that is shares the same request.

Craig


On Thu, 3 May 2001, Immanuel, Gidado-Yisa wrote:

> Consider the following JSP Pages
> 
> Main.jsp
> --------
>   <%@ taglib uri="bean" prefix="bean" %>
> 
>   <bean:define id="poweredbyTitle"
>                value="<h2>Economic Report By County</h2>"
>                toScope="request" />
> 
>   <jsp:include page="PoweredBy.jsp" flush="true"/>
> 
> 
> PoweredBy.jsp
> -------------
>   <%@ taglib uri="bean" prefix="bean" %>
> 
>   <bean:write name="poweredbyTitle" filter="false"/>
>   Is Powered By...
> 
> 
> The 'bean:write' is able to find 'poweredbyTitle' in
> request scope.  However, if I use the following 'Main.jsp'
> page with 'bean:include':
> 
> Main.jsp<2>
> -----------
>   <%@ taglib uri="bean" prefix="bean" %>
> 
>   <bean:define id="poweredbyTitle"
>                value="<h2>Economic Report By County</h2>"
>                toScope="request" />
> 
>   <bean:include id="poweredby" forward="poweredby" />
> 
> Assuming correct Global Forward...the 'PoweredBy.jsp' page
> is not able to locate find the attribute 'poweredbyTitle'
> in any scope (as far as I can tell), and an empty String
> is printed.  Note that if I use (in Main.jsp)
> 'toScope="session"' instead, it all works fine.
> 
> Is this the expected behavior, or a bug?  (I'll make the
> appropiate bug-report if necessary.)
> 
> Thanks,
> Gidado
> 
> p.s. From looking at org.apache.struts.taglib.IncludeTag:
> 
>     public int doStartTag() throws JspException {
>       URL url = hyperlink();
>       URLConnection conn = null;
>       try {
>           conn = url.openConnection();
>           conn.setAllowUserInteraction(false);
>           conn.setDoInput(true);
>           conn.setDoOutput(false);
>           conn.connect();
> 
> it is apparent that there is no use of a RequestDispatcher
> (which, I'm assuming, would help in keeping track of
> 'request' scoped attributes).
> 

Reply via email to