如何指定 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 相同的结果而不考虑它们被调用的顺序。
我在 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 相同的结果而不考虑它们被调用的顺序。