如何指定 JSF 中的求值顺序?

How to specify the order of evaluation in JSF?

我在 JSF-2.1_29。据我所知,被管理 bean 的 methodw 调用顺序对应于它们在标记中的放置方式。在我的特殊情况下,我有:

<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(),其中 returns 0,因此 Rows count: 0 将在页面首先加载时打印,尽管 table 可能包含一些行。 getRowsCount()方法调用后,getList()被调用,所以实际的Rows count只有在刷新页面后才会打印。我如何重新排序方法调用的顺序? JSF可以吗?

我不知道您是否可以更改 getter 调用的顺序。但除此之外,一个 get 方法的结果依赖于另一个 get 方法的调用是一个糟糕的设计。两个 getter 应该 return 相同的结果而不考虑它们被调用的顺序。