1
我在p:dataTable
中遇到了兩起奇怪行爲。首先,當我嘗試撥打h:link
和f:param
時,鏈接始終發送相同的ID。始終是第一個條目的ID。 更大的問題是,當我按下命令按鈕時,h:link
被調用,但這種行爲完全沒有預料到。特別是沒有正確的參數。 這是一個錯誤還是我做錯了什麼? 當我刪除h:link
一切正常工作。 我希望得到任何幫助在這一問題上primefaces <p:datatable><p:commandlink>意外觸發另一個<h:link>
我Primefaces版本是3.5和IM與Liferay的6.1在Tomcat 7的工作有了最新FacesBridge
<h:form id="serviceForm">
<p:dataTable id="newServicesTable" var="service" value="#{cloudServicesBean.newServices}" rowKey="service.serviceId" selection="#{cloudServicesBean.selectedService}">
<p:column headerText="Servicename">
<h:link outcome="/views/cloudservice/overview.xhtml" includeViewParams="true" value="#{service.serviceName}">
<h:outputText value="#{service.serviceId}"/>
<f:param name="selectedServiceId" value="#{service.serviceId}" />
</h:link>
</p:column>
<p:column headerText="Provider">
<h:outputText value="#{adminBean.getOrganizationNameForId(service.providerId)}" />
</p:column>
<p:column headerText="Datum">
<h:outputText value="#{service.createDate}" />
</p:column>
<p:column headerText="Aktionen" rendered="#{adminBean.isUserAdministrator()}">
<p:commandButton icon="ui-icon-check" action="#{cloudServicesBean.setServiceApproved}" update=":serviceForm">
<f:setPropertyActionListener value="#{service}" target="#{cloudServicesBean.selectedService}" />
</p:commandButton>
</p:column>
</p:dataTable>
您可以嘗試'rowIndexVar =「index」'代替'rowKey',然後通過f:param value =「#{index}」'傳遞值。這應該解決設置的第一個元素問題。 – 2013-04-30 16:39:18
除非錯誤輸入,否則必須在'rowKey'屬性中包含EL表達式。這意味着'#{service.serviceId}'而不是'service.serviceId'。我可以看到的第二個問題是,你給'h:link'一個值並且把'h:outputText'放在裏面,這基本上是多餘的。 – 2013-05-01 16:21:51
當我使用索引時,該值始終爲0,冗餘也沒有幫助。我總是得到相同的selectedServiceId。令人驚訝的是serviceId的outputText是正確的。但不是Param總是相同的id。即使我把一個硬編碼參數在另一列與我修復ID它具有相同的ID像每隔一個參數值:( – 2013-05-02 11:25:36