p:commandButton的动态AJAX内容单击JSF2

时间:2014-07-14 03:15:44

标签: ajax jsf-2 primefaces

我想在点击<p:commandButton>按钮时添加新文本框。
但是当我尝试更新视图时,我在eclipse控制台中收到以下错误。

ERROR [ServletExternalContextImpl] Cannot set content type. Response already committed

感谢您的任何帮助。

当我单击Edit链接时,它应该从bean中的ArrayList获取值。

 <p:commandLink value="Edit" style="font-size:small!important;"
                    immediate="false" update=":company:editPremisesDlg" rendered="true"                 
                    action="#{registerBean.editPremisesAction(premises)}" 
                    oncomplete="editPremisesDlg.show()"/>

服务器代码:

public String editPremisesAction(Premises premises) {
    System.out.println("******"+premises.portableWaterAccounts.size());
    selectedPremisesIndex = this.company.premisesList.indexOf(premises);
    this.selectedPremises = new Premises(premises); 
    WaterAccountBean waterAccountBean=(WaterAccountBean) FacesContext.getCurrentInstance().
    getExternalContext().getRequestMap().get("waterAccountBean");
    List<UIComponent> pwChildren=waterAccountBean.getEditPwPanel().getChildren();
    //assign values for water accounts
    for(int i=0;i<pwChildren.size();i++)
    {
        UIComponent uiComponent=pwChildren.get(i);
        if(uiComponent instanceof HtmlInputText)
        {
            System.out.println(i+" #####");
            if(i<premises.getPwWaterAccounts().size()-1)
            {


                ((HtmlInputText) uiComponent).setValue(premises.getPwWaterAccounts().get(i));
                System.out.println("******"+premises.getPwWaterAccounts().get(i));
                ((HtmlInputText) uiComponent).setStyleClass("showview");

            }
            else
            {
                ((HtmlInputText) uiComponent).setValue("");
                ((HtmlInputText) uiComponent).setStyleClass("hideview");
            }
        }
    }
    return null;
}

显示视图:

<h:panelGroup  cellpadding="1" cellspacing="0" width="100%"  id="editPanelPW" binding="#{waterAccountBean.editPwPanel}">
                <h:inputText  id="editPw0" required="false"
                    style="width:325px;" maxlength="100" />
<h:inputText  id="editPw1" required="false"
                    style="width:325px;" maxlength="100" />


                </h:panelGroup>
                        <p:commandButton  value="Add New" type="button" onclick="showNewInput('pw')">

                </p:commandButton>

感谢您是否可以向我建议添加动态内容的最佳方式(例如,在单击按钮时向面板添加文本框)到JSF页面。目前我使用了一些javascript来做到这一点。但是有没有任何纯JSF方式动态添加多个文本框并将它们绑定到托管bean中的ArrayList?感谢。

0 个答案:

没有答案