JSF:导航问题(Ajax /非Ajax)

时间:2011-07-06 08:08:57

标签: ajax jsf navigation primefaces

按下以下(PrimeFaces)按钮时

<p:commandButton value="Search"
                 actionListener="#{personController.searchPersons}"
                 update="resultTable"/>

我加载一个对象列表并将它们显示在当前页面的表格中。这是通过Ajax调用完成的。

现在我想执行以下操作:如果只找到一个对象,请不要更新结果表,而是直接链接到“详细信息页面”。 (例如detail.xhtml

如何做到这一点?

我知道我可以通过searchPersons()方法的返回值来控制导航。但它不能正常工作。我认为这与我的按钮的update="resultTable"有关。但我目前不知道如何解决这个问题......

1 个答案:

答案 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');"