当按下以下(PrimeFaces)按钮
<p:commandButton value="Search"
actionListener="#{personController.searchPersons}"
update="resultTable"/>
加载一个对象列表,并在当前页面的表中显示它们。这是通过Ajax调用完成的。
现在我想做以下事情:如果只找到一个对象,不要更新结果表,而是直接链接到"详细页面"。(如detail.xhtml
)
如何做到这一点?
我知道我可以通过我的searchPersons()
方法的返回值控制导航。但它并没有像它应该的那样工作。我认为这与我的按钮的update="resultTable"
有关。
您可以在oncomplete
属性中引入一些JS。它将在bean操作和部分更新完成时执行。你可以通过给window.location
分配一个新的URL来改变JS中的窗口位置。
这里是一个随机的启动示例,假设您有一个id为persons
的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');"