Java 在primefaces中,某些变量被p:wizard擦除

Java 在primefaces中,某些变量被p:wizard擦除,java,primefaces,Java,Primefaces,我正在使用Primefaces编程,我使用p:向导 我有个问题。当我在第1步时,我可以访问我的所有变量,但当我转到第2步生成panelGrid时,步骤1中可用的变量现在在方法createForm中为空: <p:wizard widgetVar="wiz"> <p:tab id="stepone" title="Step 1"> <p:panel> <h:panelGrid >

我正在使用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
   ...
}
列表元素;
私有暂态分量网格;
公共图书馆{
this.initForm();
}
公共UIComponent getPanelGrid(){
if(panelGrid==null){
panelGrid=createForm();
}
返回板栅;
}
.....
公共void setPanelGrid(UIComponent panelGrid){
this.panelGrid=panelGrid;
}
公共UIComponent createForm(){
//这里listElement为null
对于(SiacFrmdinamico campo:listElement){
....
}
}
公共表格(){
...
//填充列表元素
...
}
来自文档:

首先,创建支持bean,重要的是 跨多个请求生存,因此避免使用请求范围bean。最优的 向导的作用域是viewScope

基本上,用
@ViewScoped
注释类,并确保向导位于
标记内