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> </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のメソッドに引数を渡す正しい方法ですか?
これを行うには、より効率的な方法がありますか?
私の場合、私は次のようなことをします: 'value ="#{viewRecordBean.currentRecord(listsRecord.id)?listingRecord.candidate:messages ['table.header.record.archived']} "。 2つの行の代わりに1つのみがあり、条件を1回だけチェックします。 –