Getter正在添加额外的HtmlPanelGrid

时间:2013-04-09 05:19:42

标签: jsf jsf-2

我正在创建一个java程序,它在jsf 2.0中的xhtml页面中动态添加jsf组件。 现在我正面临一个奇怪的问题。下面是我的.java代码和.xhtml代码。

首先,在命令按钮动作事件之前调用HtmlPanelGrid的getter。 当它返回网格时,它会在网格对象中添加额外的面板网格。

因此,当我第二次点击按钮时,globalGrid子计数为2而不是1。

我在@ViewScoped中的范围。

请帮忙解决这个问题。

提前致谢。

testCustom.xhtml

<h:panelGrid binding="#{datatableBean.globalGrid}" />           <h:commandButton value="{bundle.newCaseInfoSheet_addAdditionalParty}" action="# {datatableBean.addNewAdditionalParties}" />

DatatableBean.java

public class DatatableBean{   

    public static HtmlPanelGrid globalGrid = new HtmlPanelGrid();
    public int gridCounter = 1;

    public void setGlobalGrid(HtmlPanelGrid globalGrid) {
        this.globalGrid = globalGrid;
    }

    public HtmlPanelGrid getGlobalGrid() {
        return globalGrid;
    }

    public HtmlPanelGrid getAdditionalParties(int i) {

            HtmlPanelGrid mainGrid = null;
            HtmlOutputText LNameText = new HtmlOutputText();

            LNameText.setId("LNameText_"+i);
            LNameText.setValue("Last Name");

            HtmlInputText LNameInputText = new HtmlInputText();
            LNameInputText.setId("LNameInputText_"+i);

            mainGrid = new HtmlPanelGrid();
            mainGrid.setId("mainGrid_"+i);
            mainGrid.setColumns(2);
            mainGrid.getChildren().add(LNameText);
            LNameInputText.setSize(45);
            mainGrid.getChildren().add(LNameInputText);

        return mainGrid;
    }

    public void addNewAdditionalParties() {

        System.out.println("\n In globalGrid Start -------->" + globalGrid.getChildCount() + "" );

        if(gridCounter >= 2)
        {
            globalGrid = (HtmlPanelGrid)session.getAttribute("globalGrid");
            globalGrid.getChildren().clear();
            System.out.println("Grid COunt is --> " + gridCounter);
            for(int i =1; i<=gridCounter; i++)
            {
                globalGrid.getChildren().add(getAdditionalParties(i));
            }
        }
        else
        {
            globalGrid.getChildren().add(getAdditionalParties(1));
        }
        gridCounter++;
        System.out.println("Grid Count after is --> " + gridCounter);
    }
}

0 个答案:

没有答案