按下以下(PrimeFaces)按钮时
<p:commandButton value="Search"
actionListener="#{personController.searchPersons}"
update="resultTable"/>
我加载一个对象列表并将它们显示在当前页面的表格中。这是通过Ajax调用完成的。
现在我想执行以下操作:如果只找到一个对象,请不要更新结果表,而是直接链接到“详细信息页面”。 (例如detail.xhtml
)
如何做到这一点?
我知道我可以通过searchPersons()
方法的返回值来控制导航。但它不能正常工作。我认为这与我的按钮的update="resultTable"
有关。但我目前不知道如何解决这个问题......
答案 0 :(得分:1)
您可以在oncomplete
属性中引入一些JS。它将在bean操作和部分更新完成时执行。您可以通过为window.location
分配新URL来更改JS中的窗口位置。
这是一个随机启动示例,假设您有一个ID为persons
的人员表,并且详细信息链接在表格行的某处看起来像<a class="detail" href="detail.xhtml?id=123">
。
oncomplete="var $persons = jQuery('#persons tbody tr'); if ($persons.length == 1) window.location = $persons.find('a.detail').attr('href');"