Hello,

I have a jsf, myfaces, facelets, tomahawk, displaytag and c:forEach question. My apologies if you see this question in some other boards relevant to this discussion.

This is the issue.

I load a list of customers.. I loop thru each of them using c:forEach, ui:repeat, displaytag and t:dataTable. All of them behave differently, if <c:if test is used inside the body tag.. All of them are incorrect except for c:forEach (there may be a different problem with display tag, as I can't get it to show up in this page.)

Below is the code for the page.. and the result follows it. The code is self explanatory and the results show the discrepancy. I would appreciate if someone could point out what I may be doing wrong, or if I am not understanding how t:dataTable or ui:repeat works... Are there issues with c:if evaluation at compile time versus runtime? Is there any remedy to this?

Thanks
MRather

customerList.xhtml
===============================CODE BEGIN
<html xmlns="http://www.w3.org/1999/xhtml";
   xmlns:c="http://java.sun.com/jstl/core";
   xmlns:f="http://java.sun.com/jsf/core";
   xmlns:h="http://java.sun.com/jsf/html";
   xmlns:ui="http://java.sun.com/jsf/facelets";
   xmlns:t="http://myfaces.apache.org/tomahawk";
   xmlns:acegi="http://sourceforge.net/projects/jsf-comp/acegijsf";
   xmlns:fmt="http://java.sun.com/jsp/jstl/fmt";
   xmlns:display="http://displaytag.sf.net";>


   <ui:composition>
<c:set var="customers" value="${customerList.customers}" scope="request" /> ==================== c:forEach =================<br/>
       <c:forEach var="customer" items="${customers}" >
           <c:set var="isOneC" value="NO" />
           <c:if test="${customer.id eq 1}">
               <c:set var="isOneC" value="YES" />
           </c:if>
           ${customer.id} - ${customer.name} - ${isOneC}
           <br/>
       </c:forEach>
       ==================== c:forEach =================<br/><br/><br/>
==================== ui:repeat =================<br/>
       <ui:repeat var="customer" value="${customers}" >
           <c:set var="isOneUI" value="NO" />
           <c:if test="${customer.id eq 1}">
               <c:set var="isOneUI" value="YES" />
           </c:if>
           ${customer.id} - ${customer.name} - ${isOneUI}
           <br/>
       </ui:repeat>
       ==================== ui:repeat =================<br/><br/><br/>
==================== display:table =================<br/>
       <display:table name="${customers}" />
       ==================== display:table =================<br/><br/><br/>
==================== t:dataTable =================<br/>
       <t:dataTable var="customer" value="${customers}" >
           <t:column styleClass="#{row.styleClass}">
<c:set var="isOneT" value="NO" />
               <crt:if test="${customer.id eq 1}">
                   <c:set var="isOneT" value="YES" />
               </crt:if>
${customer.id} - ${isOneT}
           </t:column>
           <t:column styleClass="#{row.styleClass}">
               ${customer.name}
           </t:column>
       </t:dataTable>
       ==================== t:dataTable =================<br/><br/><br/>
<ui:debug />
   </ui:composition>
</html>
==========================================CODE END

and below is the result. c:forEach works, but others don't


==================== c:forEach =================RESULT BEGIN
1 - cust1- YES
2 - cust2 - NO
3 - cust3 - NO
4 - cust4- NO
5 - cust5 - NO
6 - cust6 - NO
7 - cust7 - NO
8 - cust8 - NO
9 - cust9- NO
==================== c:forEach =================


==================== ui:repeat =================
1 - cust1- NO
2 - cust2 - NO
3 - cust3 - NO
4 - cust4- NO
5 - cust5 - NO
6 - cust6 - NO
7 - cust7 - NO
8 - cust8 - NO
9 - cust9 - NO
==================== ui:repeat =================


==================== display:table =================
==================== display:table =================


==================== t:dataTable =================
1 - YES    cust1
2 - YES    cust2
3 - YES    cust3
4 - YES    cust4
5 - YES    cust5
6 - YES    cust6
7 - YES    cust7
8 - YES    cust8
9 - YES    cust9
==================== t:dataTable =================RESULT END



Reply via email to