我正在使用PrimeFaces 5.1,当用户使用以下代码单击history.pushState
行时,我会调用p:dataTable
:
<p:dataTable value="#{associateBean.scenarios}"
selectionMode="single"
selection="#{associateBean.selectedScenarioViewBean}"
var="scenarioViewBean" rowKey="#{scenarioViewBean.id}">
<p:ajax event="rowSelect"
listener="#{associateBean.onScenarioRowSelect}"
oncomplete="history.pushState('','','test#{scenarioViewBean.id}')"
update="@form"/>
<p:column>
<h:outputText value="#{scenarioViewBean.name}"/>
</p:column>
</p:dataTable>
如您所见,我正在尝试将
scenarioViewBean.id
值传递给我的pushState
调用。问题在于
#{scenarioViewBean.id}
不返回任何内容,因此JavaScript在URL中推送了“ test”而不是“ test123”。我怎么解决这个问题?
最佳答案
无需使事情复杂化,保留rowSelect ajax事件并按以下方式传递ID:
PF('dataTableWV').selection[0]
根据您的问题,最终结果应如下所示:
<p:ajax event="rowSelect"
listener="#{associateBean.onScenarioRowSelect}"
oncomplete="history.pushState('','','test'+PF('dataTableWV').selection[0]"
update="@form"/>
注意:
dataTableWV
是dataTable小部件