2011-02-14 2 views
6

バッキングBeanによって返されたStringプロパティに応じて、<h:outputText>または<h:commandLink>を表示しようとしています。<c:if>と2つの文字列を比較するには?

<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> 

比較が機能していないが:文字列を比較するとき、私は問題を抱えています ... は、ここで示す図です。これは正しい方法ですか?あなたは<h:dataTable>でこれを使用しているように見える任意のヘルプ

答えて

10

ためJSP sample

ありがとう:に行われるよう は、それは<jsp:useBean....>せずに行うことができます。 JSTLタグは、ビューの作成時のみ評価され、ビューのレンダリング時は評価されません。 JSTLは最初から上から下に向かって実行され、次に生成された結果がJSFに渡されて再び上から下に実行されます。 JSTLタグがJSFデータテーブル内で評価される瞬間、データテーブルの反復アイテム(var属性のもの)はJSTLでは使用できません。したがって、テスト結果は常にfalseです。

JSFコンポーネントのrendered属性を代わりに使用してください。

<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/> 

は、ここでは、rendered属性を利用することができる方法をいくつかのより多くの例を示します。具体的な問題とは無関係の

<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最高JSF学習リソースです。私は他のリソースに向かうことをお勧めします。

+0

私は自分のチームのJava Arquitectと相談しました。ご回答どうもありがとうございました! :) – camiloqp

+0

よろしくお願いします。 – BalusC

+0

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

関連する問題