Jsf primefaces<;p:datatable>&书信电报;p:commandlink>;再发射一枚<;h:link>;意外地

Jsf primefaces<;p:datatable>&书信电报;p:commandlink>;再发射一枚<;h:link>;意外地,jsf,primefaces,Jsf,Primefaces,我的p:dataTable中有两个奇怪的行为案例。首先,当我尝试使用f:param调用h:link时,该链接始终发送相同的id。始终是来自第一个条目的id。 更大的问题是,当我按下命令按钮时,会调用h:link,尽管这种行为完全出乎意料。尤其是没有正确的参数。 这是一个错误还是我做错了什么? 当我删除h:link时,一切正常。 在这件事上,如果有任何帮助,我将不胜感激 我的Primefaces版本是3.5,我在Tomcat7上使用Liferay 6.1。用最新的脸谱桥 <h:form id

我的
p:dataTable
中有两个奇怪的行为案例。首先,当我尝试使用
f:param
调用
h:link
时,该链接始终发送相同的id。始终是来自第一个条目的id。 更大的问题是,当我按下命令按钮时,会调用
h:link
,尽管这种行为完全出乎意料。尤其是没有正确的参数。 这是一个错误还是我做错了什么? 当我删除
h:link
时,一切正常。 在这件事上,如果有任何帮助,我将不胜感激

我的Primefaces版本是3.5,我在Tomcat7上使用Liferay 6.1。用最新的脸谱桥

<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>

我也有同样的问题。我在Tomcat7上运行PrimeFaces3.5和Liferay 6.0.11。当我将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>

com.liferay.faces
liferay faces合金
3.1.3-ga4
com.liferay.faces
liferay面向bridge impl
3.1.3-ga4
com.liferay.faces
liferay faces门户
3.1.3-ga4

我也有同样的问题。我在Tomcat7上运行PrimeFaces3.5和Liferay 6.0.11。当我将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>

com.liferay.faces
liferay faces合金
3.1.3-ga4
com.liferay.faces
liferay面向bridge impl
3.1.3-ga4
com.liferay.faces
liferay faces门户
3.1.3-ga4

您可以尝试
rowIndexVar=“index”
而不是
rowKey
然后通过f:param value=“#{index}”传递值。这将解决设置第一个元素的问题。除非键入错误,否则必须在
rowKey
属性中包含EL表达式。这意味着
{service.serviceId}
而不是
service.serviceId
。我能看到的第二个问题是,你给
h:link
一个值,并且把
h:outputText
放在里面,这基本上是冗余的。当我使用索引时,值总是0,冗余也没有帮助。我总是得到相同的selectedServiceId。令人惊讶的是,带有serviceId的outputText是正确的。但不是始终相同id的参数。即使我在另一列中使用i fix id放置硬编码的参数,它的id也与其他每个参数值相同:(您可以尝试
rowIndexVar=“index”
而不是
rowKey
,然后通过f:Param value=“#{index}”传递值)`。这将解决设置第一个元素的问题。除非键入错误,否则必须在
rowKey
属性中包含EL表达式。这意味着
{service.serviceId}
而不是
service.serviceId
。我看到的第二个问题是,你给
h:link
一个值,并且把
h:outputText
放在里面,这基本上是冗余的。当我使用index时,这个值总是0,冗余也没有帮助。我总是得到相同的selectedServiceId。令人惊讶的是,outputText使用serviceId是正确的。但参数不是始终相同的id。即使我在另一列中使用i fix id放置硬编码的参数,它的id与其他所有参数值相同:(