简而言之,这是我的情况。
我有一个带有数据表的页面和几个由 bean 支持的按钮。Bean 应该使用一些默认属性进行初始化。该属性可以根据操作进行更改。我从 RequestScoped bean 和 @PostConstruct 注释方法开始。但似乎数据表仅适用于视图(会话)范围。现在我的设置如下所示:
@ManagedBean
@ViewScoped
public class ProductsTableBean implements Serializable {
private LazyDataModel<Products> productsData;
@Inject
private ProductsFacade model;
public void onPageLoad() {
// here some defaults are set
// ...
System.err.println("onPageLoad called");
}
public void addRow() {
// andhere some defaults redefined
// ...
System.err.println("addRow called");
}
...
和来自 jsf 页面的片段:
<p:commandButton action="#{productsTableBean.addRow()}"
title="save"
update="@form" process="@form" >
</p:commandButton>
...
<f:metadata>
<f:event type="preRenderView" listener="#{productsTableBean.onPageLoad}"/>
</f:metadata>
这是调用顺序中出现的主要问题,我有以下输出:
onPageLoad called
addRow called
onPageLoad called <-- :(
但我希望 addRow 成为最后一个被调用的操作,如下所示:
onPageLoad called
addRow called
这里有什么简单的解决方案吗?