我想在点击<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?感谢。