我使用的是 PrimeFaces 5.1,当用户使用以下代码单击 p:dataTable
行时,我会调用 history.pushState
:
<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 widgetVar
关于javascript - 在 dataTable rowSelect 上调用 History.pushState,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28813078/