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

发布于 2024-11-18 16:26:14 字数 489 浏览 0 评论 0原文

当按下以下 (PrimeFaces) 按钮时,

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

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

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

如何做到这一点?

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

When the following (PrimeFaces) button is pressed

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

I load a list of objects and display them in a table on the current page. This is done via an Ajax call.

Now I'd like to do the following: If only one object is found, don't update the result table but link directly to the "detail page". (e.g. detail.xhtml)

How can this be done?

I know that i can control the navigation via the return value of my searchPersons() method. But It doesn't work as it should. I think it has to do with the update="resultTable" of my button. But I currently don't know how to solve this...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

话少心凉 2024-11-25 16:26:14

您可以在 oncomplete 属性中引入一些 JS。它将在bean操作和部分更新完成时执行。您可以通过分配 window.location 一个新的 URL 来更改 JS 中的窗口位置。

这是一个随机启动示例,假设您有一个 ID 为 persons 的 Person 表,并且详细信息链接类似于 表格行中的某处。

oncomplete="var $persons = jQuery('#persons tbody tr'); if ($persons.length == 1) window.location = $persons.find('a.detail').attr('href');"

You can bring in some JS in oncomplete attribute. It will be executed when the bean action and the partial update is completed. You can change the window location in JS by assigning window.location a new URL.

Here's a random kickoff example, assuming that you've a persons table with id persons and that the detail link look something like <a class="detail" href="detail.xhtml?id=123"> somewhere in the table row.

oncomplete="var $persons = jQuery('#persons tbody tr'); if ($persons.length == 1) window.location = $persons.find('a.detail').attr('href');"
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文