我正在尝试将表单的内容提交给托管bean storeAppointment()
中的方法,但是从不触发commandButton的action属性。如果我使用onclick属性,则将调用托管bean中的方法,但是,在加载页面时,onclick属性也会触发,这不是我想要的。我的表格如下:
<h:form>
<p:growl id="msgs" showDetail="true" skipDetailIfEqualsSummary="true">
<p:autoUpdate />
</p:growl>
<h:panelGrid columns="2" cellpadding="5">
<p:outputLabel for="start" value="Start Time" />
<p:datePicker id="start" value="#{createAppCtrl.startTime}" showTime="true" stepMinute="5"/>
<p:outputLabel for="finish" value="Finish Time" />
<p:datePicker id="finish" value="#{createAppCtrl.finishTime}" showTime="true" stepMinute="5"/>
<h:outputLabel for="multiple" value="Multiple:" />
<p:selectCheckboxMenu id="multiple" value="#{createAppCtrl.selectedUsers}" label="Users" multiple="true"
filter="true" filterMatchMode="startsWith" panelStyle="width:250px">
<p:ajax event="itemUnselect" listener="#{createAppCtrl.onItemUnselect}" />
<f:selectItems value="#{createAppCtrl.involvement}" />
</p:selectCheckboxMenu>
</h:panelGrid>
<p:commandButton value="Submit"
action="#{createAppCtrl.storeAppointment}"
update="displayItems"
oncomplete="PF('itemDialog').show()"/>
<p:dialog header="Selected Items" modal="true" showEffect="fade" hideEffect="fade" widgetVar="itemDialog" width="250">
<p:outputPanel id="displayItems">
<h:outputText value="Time: " />
<h:outputText value="#{createAppCtrl.startTime}" >
<f:convertDateTime pattern="MM/dd/yyyy HH:mm" />
</h:outputText>
<h:outputText value="Time: " />
<h:outputText value="#{createAppCtrl.finishTime}">
<f:convertDateTime pattern="MM/dd/yyyy HH:mm" />
</h:outputText>
<p:dataList value="#{createAppCtrl.selectedUsers}" var="city" emptyMessage="No cities selected" style="margin-bottom: 10px;">
<f:facet name="header">
Multiple
</f:facet>
#{city}
</p:dataList>
</p:outputPanel>
</p:dialog>
</h:form>
单击commandButton时,update
和oncomplete
属性将按预期工作,但是oncomplete
显示的对话框仅显示空值。
action
所调用的方法是#{createAppCtrl.storeAppointment}
:
public String storeAppointment() {
try {
System.out.print(startTime + " " + finishTime + " " + involvement);
appointmentBean.createAppointment(startTime, finishTime, involvement);
return "";
} catch (Exception e) {
System.out.print("Ctrl: " + e);
return "";
}
}