如何在JSF中指定评估顺序?

时间:2015-04-03 08:15:49

标签: jsf jsf-2

我在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吗?

1 个答案:

答案 0 :(得分:1)

我不知道你是否可以改变getter调用的顺序。但除此之外,get方法的结果对另一个get方法的调用的依赖性是一个糟糕的设计。两个getter应返回相同的结果,而不考虑它们的调用顺序。