Also, I wrote this: http://myfaces.apache.org/sandbox/limitRendered.html
On Dec 13, 2007 2:02 PM, Andrew Robinson <[EMAIL PROTECTED]> wrote: > c:... are evaluated at compile time > all others are evaluated at render time. > > Best suggestion is to never use jstl tags with JSF. If you must, > understand that they are executed *before* the components are built. > There are WIKIs out there on this. > > Use the rendered attribute instead of c:if > > > On Dec 13, 2007 1:56 PM, M Rather <[EMAIL PROTECTED]> wrote: > > 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 > > > > > > > > >

