tags c:forEach and ui:repeat
denis.zjukow Sep 17, 2007 10:33 AMHello,
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!