2012-02-24 17 views
1

SQLクエリのデータテーブルを表示していて、このSQLクエリのフィールド値のいずれかに基づいてコードセクションをレンダリングしたいとします。レンダリングされたメソッドの引数を渡す方法h:outputText?

ビュー:records.xthml

<table> 
    <thead> 
    <tr> 
     <td>#{messages['table.header.id']}</td> 
     <td>#{messages['table.header.name']}</td> 
     <td>#{messages['table.header.date.added']}</td> 
     <td>&nbsp;</td> 
    </tr> 
    </thead> 
    <tbody> 
    <a4j:repeat value="recordListBean.records" var="listedRecord" rowKeyVar="index"> 
     <tr> 
     <td><h:outputText value="#{listedRecord.id}</td> 
     <td><h:outputText value="#{listedRecord.name}</td> 
     <td> 
      <h:outputText value="#{listedRecord.dateAdded}" rendered="#{viewRecordBean.currentRecord(listedRecord.id)}" /> 
      <h:outputText value="#{messages['table.header.record.archived']}" rendered="!#{viewRecordBean.currentRecord(listedRecord.id)}" /> 
     </td> 
     </tr> 
    </a4j:repeat> 
    </tbody> 
</table> 

コントローラ:私はしたい

<h:outputText value="#{listedRecord.candidate}" rendered="#{viewRecordBean.currentRecord(listedRecord.id)}" /> 
<h:outputText value="#{messages['table.header.record.archived']}" rendered="#{!viewRecordBean.currentRecord(listedRecord.id)}" /> 

:ViewListBean.java

public boolean currentRecord(Long recordId) { 
    Long maxRecordId = 10; 
    if (recordId <= maxRecordId) { 
    return true; 
    } else { 
    return false; 
    } 
} 

問題のrecords.xhtmlコードの2行ですレンダリングされたチェック内で引数を渡して、レンダリングするかどうかブール値を返すことができます。このSQLクエリで返されるレコードが20個あるとします。現在の行のrecordIdの値が10以下の場合、trueを返し、listedRecord.dateAddedフィールドが表示されます。それ以外の場合はfalseを返し、Archivedという単語が表示されます。

これは、JSF生成のXHTMLページから制御Beanのメソッドに引数を渡す正しい方法ですか?

これを行うには、より効率的な方法がありますか?

+0

私の場合、私は次のようなことをします: 'value ="#{viewRecordBean.currentRecord(listsRecord.id)?listingRecord.candidate:messages ['table.header.record.archived']} "。 2つの行の代わりに1つのみがあり、条件を1回だけチェックします。 –

答えて

1

あなたは間違いが1つあります。!はEL式の中に入っていなければなりません。

I.e.これは無効です:

rendered="!#{viewRecordBean.currentRecord(listedRecord.id)}" 

それは次のようになります。

rendered="#{!viewRecordBean.currentRecord(listedRecord.id)}" 

それはあなたの環境がEL 2.2をサポートしていると仮定して、うまく動作するはずですように見えレムナントのために。私は<h:dataTable>を使って、HTML定型句を排除します。

+0

素早く対応してくれてありがとう!!私はJSF/Java/ELなどの初心者です。 – DrewShirts

+0

サーバーとweb.xmlのバージョンによって異なります。 http://stackoverflow.com/questions/5273729/how-to-call-a-method-with-a-parameter-in-jsf – BalusC

+0

jboss-el-2.0.1を使用しているようです。モハラと – DrewShirts

関連する問題