I'm having trouble with JSP's <c:if test="">.  <c:if test="true"> and <c:if test="false"> work as expected.  But the following snippet doesn't:
<p:dataTable value="#{orderMB.allAdTypes}" var="ad">
  <c:if test="ad.isNotFullPage()">
   <p:column headerText="Type">
     <h:outputText value="#{ad.typeToString}" />
   </p:column>
  </c:if>
   <p:column headerText="Name">
     <h:outputText value="#{ad.name}" />
   </p:column>
</p:dataTable>
I only see one column; ad.isNotFullPage() is never called.  I've tried all combinations of test="#{ad.isNotFullPage()}, test="${ad.isNotFullPage()}", test="#{ad.isNotFullPage} (this last in the hopes that ad.getIsNotFullPage() gets called.)
orderMB is a @ManagedBean @ViewScoped.  orderMB.getAllAdTypes() returns List<AdType>.  AdType is @Entity @Table(name = "ad_type").
This is running on Glassfish 3.1, JDK 1.7.