我正在顯示一個來自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>
控制器:ViewListBean.java
public boolean currentRecord(Long recordId) {
Long maxRecordId = 10;
if (recordId <= maxRecordId) {
return true;
} else {
return false;
}
}
的問題records.xhtml代碼的兩行分別是:
<h:outputText value="#{listedRecord.candidate}" rendered="#{viewRecordBean.currentRecord(listedRecord.id)}" />
<h:outputText value="#{messages['table.header.record.archived']}" rendered="#{!viewRecordBean.currentRecord(listedRecord.id)}" />
我想能夠在渲染檢查中傳遞一個參數並返回一個布爾值來呈現與否。假設在這個sql查詢中返回了20條記錄。如果當前行的recordId
值小於或等於10,則它將返回true,並且將顯示listedRecord.dateAdded
字段。否則,它將返回錯誤,並顯示Archived
這個詞。
這是將參數從JSF生成的XHTML頁面傳遞到控制bean方法的正確方法嗎?
有沒有更好或更有效的方法來做到這一點?
如果我是你,我會這樣做:'value =「#{viewRecordBean.currentRecord(listedRecord.id)?listedRecord.candidate:messages ['table.header.record.archived']}」'。而不是兩行你只有一個,你只檢查一次的條件。 – 2017-04-12 07:45:09