File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
The moose likes JBoss/WildFly and the fly likes Iterating tags in Seam (ui:repeat and c:forEach) Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Products » JBoss/WildFly
Bookmark "Iterating tags in Seam (ui:repeat and c:forEach)" Watch "Iterating tags in Seam (ui:repeat and c:forEach)" New topic

Iterating tags in Seam (ui:repeat and c:forEach)

Denis Zjukow
Ranch Hand

Joined: Mar 15, 2006
Posts: 39

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:

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:

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

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!
K Bbb

Joined: Sep 28, 2007
Posts: 4
you can use <ui:fragment rendered="#{conditional}">

also you could render the 1st item outside the loop, then set the start index to 1 on the loop and then in the loop render the comma first, then the loop item

finaly you can move the code into the java side and don't loop at all..
K Bbb

Joined: Sep 28, 2007
Posts: 4
also.. most of the time it doesn't work to mix c: tags with h: tags, c: tags are compile time, h: tags are render time. you can sometimes put an h: tag inside a c: tag, but not the other way.
Jaikiran Pai

Joined: Jul 20, 2005
Posts: 10441

I guess, the JSF forum is the right place for this question. You might get more answers there. I will move this there for you.

[My Blog] [JavaRanch Journal]
Consider Paul's rocket mass heater.
subject: Iterating tags in Seam (ui:repeat and c:forEach)
It's not a secret anymore!