File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
The moose likes Struts and the fly likes bean:define not working in logic:iterate Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Frameworks » Struts
Bookmark "bean:define not working in logic:iterate" Watch "bean:define not working in logic:iterate" New topic

bean:define not working in logic:iterate

Nina Anderson
Ranch Hand

Joined: Jul 18, 2006
Posts: 148
Hey Guys,

I'm trying to iterate through contents of a list that has a sub list inside it. I noticed that my JSP only displays the first list and contents of it's sub list. I'm using <bean efine> between the parent list and it's child list.

It seems like when the JSP executes the <bean efine> the first time in the loop it's fine. But when it comes across the <bean efine> the second time it does not execute it.

Do anyone know why?!?! ...and how can I get around this?

Here's my code:
<!-- GET Sub Category List -->
<logic:iterate id="subCategoryCbo" name="subCatList">

<bean efine id="subCatName" property="serviceSubCategoryName" name="subCategoryCbo" />
<bean efine id="subCatCode" property="serviceSubCategoryCode" name="subCategoryCbo" />
<bean efine id="subCatId" property="serviceSubCategoryId" name="subCategoryCbo" type="java.lang.Integer" />
<bean efine id="serviceMapList" property="serviceMap" name="serviceCategoryDto" />

<p><%=subCatName.toString().toUpperCase() %></p>
<!-- GET Service Map List -->
<logic:iterate id="serviceMap" name="serviceMapList">
String ID = subCatId.toString();
<logic:equal property="key" name="serviceMap" value="<%=ID%>">
KEY: <bean:write property="key" name="serviceMap" />
ID: <bean:write property="serviceSubCategoryId" name="subCategoryCbo" />
<bean efine id="serviceList" name="serviceMap" property="value"/>
<!-- GET Services -->
<% int index = 0; %>
<logic resent name="serviceList">
<logic:iterate id="serviceCbo" name="serviceList">
<% index++; if(index == 1) { out.print("<TR>"); } %>
<html:multibox property="selectedHairService">
<bean:write property="serviceCode" name="serviceCbo" />
<bean:write property="serviceName" name="serviceCbo" />
<%if(index%3 == 0) { out.print("</TR>"); index = 0;} %>
</logic resent>
<p> </p>
<p> </p>

Nina Anderson
Ranch Hand

Joined: Jul 18, 2006
Posts: 148
does anyone know what the alternative to using <bean efine> in an iteration <logic:iterate> is?
danny liu
Ranch Hand

Joined: Jan 22, 2004
Posts: 185
The substitute can be <c:set var>, which is from jstl. I would suggest that you use the combination of struts tags and jstl tags, or struts-el tags.
I agree. Here's the link:
subject: bean:define not working in logic:iterate
It's not a secret anymore!