2011-02-14 12 views
6

<h:outputText> veya <h:commandLink> bir destekleyici tarafından döndürülen bir String özelliğine göre görüntülemeye çalışıyorum.<c:if> ile 2 dizeleri karşılaştırmak nasıl?

<c:if test='#{column.header ne "Details"}'> 
    <h:outputText value="#{recordTable[column.property]}"/><br/> 
</c:if> 
<c:if test='#{column.header eq "Details"}'> 
    <h:commandLink value="#{column.header}" 
        action="#{searchBean.goToWarehouse}"/><br/> 
</c:if> 

karşılaştırmalar çalışmıyor Ancak: dizeleri karşılaştırırken ben sorun yaşıyorum .. İşte resmidir. Bunu yapmanın doğru yolu bu mu? Bir <h:dataTable> bu kullanıyor görünüyor herhangi bir yardım

cevap

10

için JSP sample

teşekkür: yapıldığı gibi o <jsp:useBean....> olmadan yapılabilir. JSTL etiketleri, görünüm oluşturma süresi boyunca değil, yalnızca görünüm oluşturma süresi boyunca değerlendirilir. Şuna kadar aşağı doğru ilerler: JSTL önce yukarıdan aşağıya doğru çalışır ve ardından üretilen sonucu tekrar yukarıdan aşağıya doğru çalıştırmak için JSF'ye aktarır. Şu anda JSTL etiketleri bir JSF veritabanın içinde değerlendirilirken, datatable'ın yinelenen öğesi (var özniteliğinde) JSTL için mevcut değildir. Bu nedenle test sonucu daima false'dur.

Bunun yerine JSF bileşeninin rendered özniteliğini kullanın.

<h:outputText value="#{recordTable[column.property]}" rendered="#{column.header ne 'Details'}"/> 
<h:commandLink value="#{column.header}" rendered="#{column.header eq 'Details'}" action="#{searchBean.goToWarehouse}"/> 
<br/> 

Burada rendered niteliğini kullanmak nasıl daha fazla örnek bulabilirsiniz: Beton sorununa İlgisiz

<h:someComponent rendered="#{bean.booleanValue}" /> 
<h:someComponent rendered="#{bean.intValue gt 10}" /> 
<h:someComponent rendered="#{bean.objectValue == null}" /> 
<h:someComponent rendered="#{bean.stringValue != 'someValue'}" /> 
<h:someComponent rendered="#{!empty bean.collectionValue}" /> 
<h:someComponent rendered="#{!bean.booleanValue and bean.intValue != 0}" /> 
<h:someComponent rendered="#{bean.enumValue == 'ONE' or bean.enumValue == 'TWO'}" /> 

, Roseindia not iyi JSF öğrenme kaynağıdır. Diğer kaynaklara yönelmenizi tavsiye ederim.

+0

Sadece ekibimin Java Arquitect'i ile görüştüm ve bana yaptığınız gibi tam olarak aynı cevabı verdi. Cevabınız için çok teşekkür ederim! :) – camiloqp

+0

Rica ederim. – BalusC

+0

http://balusc.blogspot.in/2008/06/what-is-it-with-roseindia.html – KNU

İlgili konular