[jboss-user] [JBoss Seam] - tags c:forEach and ui:repeat

denis.zjukow do-not-reply at jboss.com
Mon Sep 17 10:33:55 EDT 2007


Hello,

Having struggled for a couple of days I finally gave up and decided to ask for help.

I use Seam with Facelets. What I want is to show a list of entities in a table cell i.e a single cell may contain a comma-separted list.

Let's say I have two entity types: Item and Subitem. An instance of type Item may have a number of Subitems. In my case the relation between these two entity types is many-to-many.

So if I have Item1 with three subitems: Subitem1, Subitem2 and Subitem3, I want to see something like this:


  |     <table>
  |      
  |       ...
  |      
  |       <tr>
  |      
  |         ...
  |      
  |         <td>Subitem1,SubItem2,Subitem3</td>
  |      
  |         ...
  |      
  |       </tr>
  |      
  |       ...
  |      
  |     </table>
  | 

Please note that I don't want a comma after the last subitem in a cell (Subitem3 in this case). Nothing special, an obvious requierment, isn't it?

The first thing I tried was ui:repeat:


  |     <!-- Table, each row represents an item. -->
  |     <h  ataTable value="items" var="item">
  |      
  |       ...
  |      
  |       <!-- This is my tricky column. -->
  |       <h:column>
  |      
  |         <!-- I want to see all subitems in a single cell. -->
  |         <ui:repeat value="#{item.subitems}" var="subitem">
  |      
  |           <!-- Show a subitem. -->
  |           <h  utputText value="#{item.subItems}" />
  |      
  |           <!-- Add separator. -->
  |           <h  utputText value="," />
  |      
  |         </ui:repeat>
  |       <h:column>
  |      
  |       ...
  |      
  |     </h  ataTable>
  | 

Everything's fine except for the fact that there is a nasty comma after the last subitem. This made me try c:forEach tag:


  |         ...
  |      
  |         <!-- I want to see all subitems in a single cell. -->
  |         <c:forEach items="#{item.subitems}" var="subitem" varStatus="stat">
  |      
  |           <!-- Show a subitem. -->
  |           <h  utputText value="#{item.subItems}" />
  |      
  |           <!-- Add separator for each subitem except for the last one. -->
  |           <c:if test="#{!stat.last}">
  |             <h  utputText value="," />
  |           </c:if>
  |      
  |         </ui:repeat>
  |      
  |         ...
  | 

Unfortunately this code won't work! It just leaves my favorite column empty. It seams that c:forEach do not see variable item.
I then tried to find a way to add the conditional logic to ui:repeat, but haven't managed to find anything like c:forEach's 'varStatus'.

Any ideas? Thank you all in advance!

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4085083#4085083

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4085083



More information about the jboss-user mailing list