我正在使用Primefaces编程,我使用p:向导。
我有问题。当我在第1步时,我可以访问所有变量,但是当我更改为第2步以生成panelGrid时,步骤1中可用的变量现在在createForm方法中为空:
<p:wizard widgetVar="wiz">
<p:tab id="stepone" title="Step 1">
<p:panel>
<h:panelGrid >
<h:outputLink value="#" onclick="wiz.loadStep (wiz.cfg.steps [1], true)">next</h:outputLink>
</h:panelGrid>
</p:panel>
</p:tab>
<p:tab id="step2" title="Step 2">
<p:panel>
<h:panelGrid >
<h:panelGrid binding="#{ingresoBean.panelGrid}">
</h:panelGrid>
<h:panelGrid >
<h:outputLink value="#" onclick="wiz.loadStep (wiz.cfg.steps [0], true);">return</h:outputLink>
</h:panelGrid>
</p:panel>
</p:tab>
</p:wizard>
豆子:
List<Element> listElement;
private transient UIComponent panelGrid;
public IngresoBean() {
this.initForm();
}
public UIComponent getPanelGrid() {
if (panelGrid == null) {
panelGrid = createForm();
}
return panelGrid;
}
.....
public void setPanelGrid(UIComponent panelGrid) {
this.panelGrid = panelGrid;
}
public UIComponent createForm(){
//here the listElement isnull
for(SiacFrmdinamico campo:listElement){
....
}
}
public void initForm(){
...
// populate listElement
...
}
答案 0 :(得分:0)
来自文件:
首先创建你的支持bean,重要的是bean 生活在多个请求中,因此请避免使用请求范围bean。最佳 向导的范围是viewScope。
基本上,使用@ViewScoped
为您的班级添加注释,并确保您的向导位于<f:view>
标记内。