我有一个DataTable的PrimeFaces,其中每行有一个保存,删除和另一的commandButton。 dataTable有selectionMode="single"
和rowSelectListener
。当我点击命令按钮时,会触发rowSelectListener
,但commandButton的动作未被触发。Primefaces数据表 - rowSelectListener隐藏命令按钮的内部行
怎么办?我需要双方开火!
我不能使用immediate="true"
,因为在dataTable之外有一些必须提交的表单域。它适用于在命令按钮中添加的immediate="true"
。
Primafaces版本:2.2.1 JSF版本:2.0.3
感谢您事先的任何线索!
代码:
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:v="http://java.sun.com/jsf/composite/composite"
xmlns:p="http://primefaces.prime.com.tr/ui">
<h:form id="contractReasonAddFormId">
<span class="error">
<h:messages />
</span>
<h:panelGrid columns="2" cellspacing="5" >
<h:outputLabel class="label" value="#{resourceBundle.coAddReason_coStatus_label_Key}" />
<h:outputText class="output" value="#{selectedContractService != null ? selectedContractService.COS_STATUS_DESC : contract.CO_STATUS_DESC}" />
<h:outputLabel class="label" for="reasonId" value="#{resourceBundle.contractChangeStatus_NewReason_Key}:" />
<h:selectOneMenu id="reasonId" value="#{bbNewStatusReason.selectedString}" required="true" requiredMessage="#{resourceBundle.contractChangeStatus_NewReason_Key} #{resourceBundle.valueIsRequired}">
<f:selectItem itemValue="" itemLabel="- #{resourceBundle.contractChangeStatus_SelectReason_Key} -" />
<f:selectItems value="#{bbNewStatusReason.list}" var="r" itemValue="#{r.REASON}" itemLabel="#{r.RS_DES}" />
</h:selectOneMenu>
</h:panelGrid>
<!-- some other form fields --->
<h:panelGrid>
<p:dataTable
id="currentStatusReasonTable"
value="${bbCurrentStatusReason.list}"
var="currStReason"
selectionMode="single"
selection="#{bbCurrentStatusReason.selectedItem}"
rowSelectListener="#{contractAddReasonAction.selectReason}" onRowSelectUpdate="reasonValidityTimes"
>
<p:column sortBy="#{currStReason.RS_DES}" headerText="#{resourceBundle.coAddReason_currStReason_label_Key}">
<h:outputText value="#{currStReason.RS_DES}: "/>
</p:column>
<!-- Other columns -->
<p:column headerText="#{resourceBundle.coAddReason_action_facet_Key}">
<p:commandButton id="updateReasonId" action="dlgUpdate" image="ui-icon ui-icon-pencil" title='#{resourceBundle["button.save"]}' disabled="#{selectedContractService != null ? currStReason.LEVEL == 'C' : false}" >
<f:setPropertyActionListener target="#{bbCurrentStatusReason.selectedItem}" value="#{currStReason}" />
</p:commandButton>
<p:commandButton id="deleteReasonId" action="dlgDelete" image="ui-icon ui-icon-circle-minus" title='#{resourceBundle["button.delete"]}' disabled="#{selectedContractService != null ? currStReason.LEVEL == 'C' : false}" >
<f:setPropertyActionListener target="#{bbCurrentStatusReason.selectedItem}" value="#{currStReason}" />
</p:commandButton>
<p:commandButton id="generateDeleteDocumentsId" action="generateDeleteDocuments" image="ui-icon" title='#{resourceBundle["button.generateDocumentsForDel"]}' immediate="true" rendered="#{showPrintDocument != null}" >
<f:setPropertyActionListener target="#{bbCurrentStatusReason.selectedItem}" value="#{currStReason}" />
</p:commandButton>
</p:column>
</p:dataTable>
</h:panelGrid>
</h:form>
</ui:composition>
你好,谢谢你的答案。但是,我面对的问题竟然完全是另一回事。发生了什么事情是这个行为被惹恼了,但是有一个jsf元素的'required = true' - 这引发了一个验证错误,这个错误没有出现在任何地方 - 甚至在控制台中都没有。更新(ajax)页面布局的错误消息显示窗格后,显示错误消息。 – user1752885