primefaces <p:datatable> <p:commandlink>意外触发另一个<h:link> </h:link> </p:commandlink> </p:datatable>

时间:2013-04-30 14:55:30

标签: jsf primefaces

我的p:dataTable中有两例奇怪的行为。首先,当我尝试使用h:link调用f:param时,链接始终会发送相同的ID。始终是第一个条目的id。 更大的问题是当我按下命令按钮时h:link被调用,虽然这种行为完全没有预期。特别是没有正确的参数。 这是一个Bug还是我做错了什么? 当我删除h:link时,一切都按预期工作。 我很感激在这件事上有任何帮助

我的Primefaces版本是3.5,我在Tomcat 7上使用Liferay 6.1。使用最新的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>

1 个答案:

答案 0 :(得分:1)

我有完全相同的问题。我在Tomcat 7上使用Liferay 6.0.11运行Primefaces 3.5。当我将Liferay JSF依赖项从版本3.1.2.ga3切换到3.1.3-ga4时,问题得到了解决。

      <dependency>
        <groupId>com.liferay.faces</groupId>
        <artifactId>liferay-faces-alloy</artifactId>
        <version>3.1.3-ga4</version>
      </dependency>
      <dependency>
        <groupId>com.liferay.faces</groupId>
        <artifactId>liferay-faces-bridge-impl</artifactId>
        <version>3.1.3-ga4</version>
      </dependency>
      <dependency>
        <groupId>com.liferay.faces</groupId>
        <artifactId>liferay-faces-portal</artifactId>
        <version>3.1.3-ga4</version>