Why aren't you using the struts taglib framework to do this since the bean
is in the request scope, it makes it a lot easier and keeps your JSP code
very clean.  And to do what I suspect you may be trying to do with the "odd"
variable, you could also use the JSTL core taglib like follows:

<c:forEach id="threadBean" items="${ThreadBeans}" varStatus="idx">
  <c:choose>
    <c:when test="${(idx.count+1)%2==0}">
      <%-- This is odd logic --%>
    </c:when>
    <c:otherwise>
      <%-- This is your even logic --%>
  </c:choose>
  <c:out value="${threadBean.sender}" />
  ...
</c:forEach>

See how clean this looks?

You can also do something simliar with the <logic:iterate> tag as a
replacement for the c:forEach core tag; however I'm partial to the core JSTL
library as its very flexible. ;-)

Unless you can show argument why using a "scriplet" is necessary, I believe
most will continue to suggest the above approach as it's a more efficient
approach.

Take care,
Chris

-----Original Message-----
From: Caroline Jen [mailto:[EMAIL PROTECTED] 
Sent: Sunday, June 13, 2004 1:19 PM
To: Struts Users Mailing List
Subject: Re: Cannot Find Bean in Any Scope


Sorry, I still did not explain my code very well.

I am trying to write out the properties of ThreadBean
in a "while loop" in my JSP:

<%
Collection threadRows = ( Collection
)request.getAttribute( "ThreadBeans" );

int odd = 0;
   Iterator iterator = threadRows.iterator();
   while( iterator.hasNext() ) 
   {
      odd = ( odd + 1 )%2;
      ThreadBean threadBean = ( ThreadBean
)iterator.next();

      .....
      .....

      <%=threadBean.getSender()%> > 
      <%=threadBean.getThreadReplyCount()%> > 
      <%=threadBean.getThreadViewCount()%> 
   }
%>
 
and the error is that cannot find threadBean in any
scope.

ThreadBeans is a collection, which is created in a
java class that extends Action.  And ThreadBeans are
passed in a request scope into my JSP.

ThreadBeans, which is a collection of JavaBean(s). 
Each of those JavaBean(s) is a ThreadBean with many
properties to be written out in a loop.  The
ThreadBean is in a package.

In my JSP scriplet, I retrieve the collection of those
JavaBean(s) from the request scope.  

Then, I enter the while loop to write out the
properties of each of those JavaBean(s).

What should I do so that my JSP knows threadBean is in
the request scope?

Thank you.

-Caroline

--- Christopher Schultz
<[EMAIL PROTECTED]> wrote:
> Caroline,
> 
> Wait a second...
> 
> > Collection threadRows = ( Collection
> > )request.getAttribute( "ThreadBeans" );
> > 
> > int odd = 0;
> >    Iterator iterator = threadRows.iterator();
> >    while( iterator.hasNext() ) 
> >    {
> >       odd = ( odd + 1 )%2;
> >       ThreadBean threadBean = ( ThreadBean )iterator.next();
> > 
> >       .....
> >    }
> > %>
> > 
> > 5. when I tried to write out the properties; for
> > example:
> > 
> > <%=threadBean.getSender()%> <%=threadBean.getThreadReplyCount()%>
> > <%=threadBean.getThreadViewCount()%>
> 
> This message doesn't look like it's coming from this
> body of code. Are
> you mixing scriptlets (as above) with 'bean' tags?
> 
> If so, you're mixing apples and oranges, since the
> bean tag doesn't do
> anything with "local" variables created by scriptlet
> code.
> 
> Are you sure you don't have something like this
> anywhere:
> 
> <bean:write name="threadBean" property="name" />
> 
> If so, you'll have to put your object into some
> scope (page or request,
> maybe) before using it with the bean tags. That's a
> bit sloppy, though, 
> and I'll recommend again that you stick to using the
> taglibs exclusively 
> rather than scriptlets.
> 
> -chris
> 

> ATTACHMENT part 2 application/pgp-signature
name=signature.asc




        
                
__________________________________
Do you Yahoo!?
Friends.  Fun.  Try the all-new Yahoo! Messenger.
http://messenger.yahoo.com/ 

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to