I am following your suggestion. I put my "while" loop in the <c:forEach ...> tag, and I have changed
<%=threadBean.getSender()%> to <c:out value="${threadBean.sender}" /> There is a situation which I do not know how to handle. Inside the <c:forEach .... > tag, I have a line of code: <%=SiteUtil.filter( threadBean.getPostTopic(), false/*html*/, true/*emotion*/, false/*mvnCode*/, false/*newLine*/, false/*URL*/ )%> This JSP expression calls a method 'filter' in another class SiteUtil.java. And one of the properties (postTopic) of the threadBean is passed as a parameter to that method. How do I use the <c: .......> tag in the above JSP expression? Thank you in advance. -Caroline --- "CRANFORD, CHRIS" <[EMAIL PROTECTED]> wrote: > 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] > > __________________________________ 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]