方法调用后更新 URL 个参数

Update URL parameters after method call

这应该很简单,但我正在查看其他问题,但找不到适合我的问题的正确答案。

我有一个调用方法的 JSF 页面 myController.load():

<f:metadata>
     <f:viewParam name="id" value="#{myController.id}" required="false"/>
     <f:viewAction action="#{myController.load()}" />

此方法将生成一个 id 并放置在 myController.id 中(如果最初未使用此类参数调用该页面)。我的问题是如何使导航栏上的 URL 反映此更改,即在 URL 中插入此新参数。基本上:

--> 浏览至 myPage.xhtml

--> 调用 myController.load() 设置 myController.id = 1

-->反映在URLmyPage.xhtml?id=1。理想情况下无需重新加载页面

您将需要阅读一些有关 PRG 的内容 (Post/Redirect/Get)。这是一个好的开始。

https://mobiarch.wordpress.com/2012/08/09/doing-post-redirect-get-pattern-in-jsf-2/

您将希望您的原始 JSF link 调用一个 ActionListener,该 ActionListener 将创建对 myController 的作用域引用并在那里将 id 属性设置为 1...然后您可以使用 PRG 重定向到您的页面. PRG 将根据您的需要使用您的 bean 的值正确构建新的 URL。

这个 ActionListener 方法非常简单,只是为了帮助说明...

// my ActionListener method
public String goToMyPage() {
    myController.setId(1); // assuming myController is declared in scope.

    return "myPage?faces-redirect=true&includeViewParams=true";
}

希望这有助于您入门。