您正在尝试在手风琴面板标签中提交表单,如下所示:
<p:tab title="SMS Configuration" >
<h:form id="smsFRM">
<p:messages closable="true" id="smsMessage"/>
<p:commandButton id="smsConfig" style="color:green;" update="smsFRM" process="@form" actionListener="#{setupController.updateSMSConfiguration()}" value="Save Configuration"/>
<br/><br/>
<p:blockUI trigger="smsConfig" block="smsFRM">
<p:graphicImage value="images/ajax-loader.gif"/>
</p:blockUI>
<h:panelGrid cellpadding="10" cellspacing="7" columns="2">
<h:outputLabel for="userName" value="User Name"/>
<h:inputText required="true" requiredMessage="Please enter Gateway UserName" value="#{setupController.dbSetup.gatewayUserName}" id="userName" />
<h:outputLabel for="apiKey" value="Secret Key"/>
<h:inputSecret required="true" requiredMessage="Please enter secret key" size="55" value="#{setupController.dbSetup.gatewayApiKey}" id="apiKey" />
</h:panelGrid>
<h:panelGrid cellpadding="10" cellspacing="7" columns="2">
<h:outputLabel for="enableAuditSMS" value="Enable Night Audit SMS"/>
<p:selectBooleanCheckbox id="enableAuditSMS" value="#{setupController.dbSetup.enableSMS}" />
<h:outputLabel for="enableCheckoutSMS" value="Enable Checkout SMS"/>
<p:selectBooleanCheckbox id="enableCheckoutSMS" value="#{setupController.dbSetup.enableCheckoutSMS}" />
</h:panelGrid>
<h:panelGrid cellpadding="10" cellspacing="7" columns="2">
<h:outputLabel for="checkoutSMS" value="Checkout SMS"/>
<h:inputTextarea id="checkoutSMS" value="#{setupController.dbSetup.checkoutSMS}" cols="40">
</h:inputTextarea>
</h:panelGrid>
<br/>
</h:form>
</p:tab>
问题:只有最后一个字段<p:inputTextArea/>
值被提交给辅助bean。
这是我点击命令按钮后调用的支持bean方法;
public void updateSMSConfiguration(){
System.out.println("Enable sms --> " + dbSetup.isEnableSMS() + "Enable Checkout SMS ->" + dbSetup.isEnableCheckoutSMS());
System.out.println("Checkout sms --> " + dbSetup.getCheckoutSMS());
ctx = FacesContext.getCurrentInstance();
rtx = RequestContext.getCurrentInstance();
try{
setupFacade.edit(dbSetup);
ctx.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "SMS configuration Updated.", ""));
// roomsFacade.setHouseKeepingTime();
rtx.update("adminGrowl");
}
catch(Exception ex){
ctx.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "SMS configuration failed", ""));
ex.printStackTrace();;
}
rtx.update("adminGrowl");
}
手风琴面板本身并未嵌套在表单中。所有其他选项卡都可以。我使用的是primefaces 4.0版和glassfish 3.1.2。我怎么解决这个问题?谢谢。