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与其他所有参数值相同:(