Показвам таблица с данни от 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)}" />
Искам да мога да предам аргумент в рамките на изобразената проверка и да върна булево значение за изобразяване или не. Да кажем, че има 20 записа, върнати в тази sql заявка. Ако стойността recordId
на текущия ред е по-малка или равна на 10, тя ще върне вярно и ще се покаже полето listedRecord.dateAdded
. В противен случай ще върне false и ще се покаже думата Archived
.
Това ли е правилният начин за предаване на аргумент от JSF генерирана XHTML страница към метода на контролиращия bean?
Има ли по-добър или по-ефективен начин да направите това?
value="#{viewRecordBean.currentRecord(listedRecord.id) ? listedRecord.candidate : messages['table.header.record.archived']}"
. Вместо два реда имате само един и проверявате условието само веднъж. - person Piotr Sagalara   schedule 12.04.2017