【发布时间】:2012-10-11 15:12:11
【问题描述】:
我有一个数据表,我想要以下行为:
我选择了一行并激活了 addRFI 按钮。
我按下 addRFI 按钮,它执行 addRFICustomer 方法并出现一个 ConfirmDialog。
我按下确认按钮,表格没有选择任何行。
如果没有选择行,则不会激活 addRFI 按钮。
我的代码(MyCSR.xhtml):
<h:form id="assignForm">
<p:dataTable var="csr" value="#{myCsrController.csrModel}" id="csrList" editable="true"
selectionMode="single" selection="#{myCsrController.csrSelected}" rowKey="#{csr.id}">
<f:facet name="header">
My Work Page
</f:facet>
<p:ajax event="rowSelect" listener="#{myCsrController.onRowSelected}" update="addRFI,addTR" />
<p:ajax event="rowUnselect" listener="#{myCsrController.onRowUnselected}" update="addRFI,addTR" />
<p:column headerText="CSR Number">
<h:outputText value="#{csr.csrNumber}" />
</p:column>
...
<f:facet name="footer">
<p:commandButton id="addRFI" value="Add/Remove RFI Customer" oncomplete="wdlg1.show()" actionListener="#{myCsrController.addRFICustomer}" update=":assignForm:confirmDialog" disabled="#{!myCsrController.isSelected}" />
</f:facet>
</p:dataTable>
<p:confirmDialog id="confirmDialog" header="Add RFI Customer" widgetVar="wdlg1" message="Please confirm that an RFI Customer activity has been created for #{myCsrController.csrSelected.csrNumber}">
<p:commandButton id="confirmButton" value="Ok" oncomplete="wdlg1.hide()" update=":assignForm:csrList" />
</p:confirmDialog>
</h:form>
MyCsrController:
public void addRFICustomer(ActionEvent event){
...
}
public void onRowSelected(SelectEvent event){
setIsSelected(true);
}
public void onRowUnselected(UnselectEvent event){
setIsSelected(false);
}
我的问题是方法addRFICustomer没有执行,我认为当我按下addRFI按钮时首先禁用按钮并且没有执行actionListener......我想先执行监听器,我做错了什么? 谢谢
【问题讨论】:
-
控制台有异常吗?在数据表之后放置一个 p:messages 组件并使用命令按钮对其进行更新。你有收到任何消息吗?
标签: ajax events jsf-2 datatable primefaces