我在JSF-2.1_29
。据我所知,manged bean的methodw invokation的顺序对应于它们在标记中的放置方式。在我的特殊情况下,我有:
<h:outputText value="Rows count:"/>
<h:outputText value="#{bonusBean.rowsCount}"/>
<rich:dataTable id="bonusesTable"
var="bonus"
value="#{bonusBean.list}"
render="ds"
rowClasses="tr0, tr1">
<!-- Columns, etc... -->
</rich:dataTable>
ManagedBean本身:
public class BonusBean{
private Integer rowsCount = 0;
//GET, SET
public List<BonusActionDTO> getList(){
List<BonusActionDTO> lst = new ArrayList<BonusActionDTO>();
//Getting the list from a persistance storage
rowsCount = lst.size();
return lst;
}
在这种情况下,首先调用getRowsCount()
并返回0,因此在首先加载页面时将打印Rows count: 0
,尽管该表可能包含一些行。调用getRowsCount()
方法后,正在调用getList()
,因此仅在刷新页面后才会打印实际的Rows count
。如何重新排序方法调用的顺序?可以在JSF
吗?
答案 0 :(得分:1)
我不知道你是否可以改变getter调用的顺序。但除此之外,get方法的结果对另一个get方法的调用的依赖性是一个糟糕的设计。两个getter应返回相同的结果,而不考虑它们的调用顺序。