【发布时间】:2012-03-15 05:14:17
【问题描述】:
我正在显示来自 sql 查询的数据表,并希望根据此 sql 查询中的一个字段值呈现一段代码。
查看: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字段。否则会返回false,并显示Archived字样。
这是将参数从 JSF 生成的 XHTML 页面传递给控制 bean 的方法的正确方法吗?
有没有更好或更有效的方法?
【问题讨论】:
-
如果我是你,我会这样做:
value="#{viewRecordBean.currentRecord(listedRecord.id) ? listedRecord.candidate : messages['table.header.record.archived']}"。而不是两行,你只有一个,你只检查一次条件。
标签: java jsf richfaces el ajax4jsf