这应该很简单,但是我正在寻找其他问题,而我找不到适合我问题的正确答案。
我有一个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
->反映在URL myPage.xhtml?id=1
中。理想情况下,无需重新加载页面
答案 0 :(得分:1)
您将需要阅读一些有关PRG(发布/重定向/获取)的信息。这是一个好的开始。
https://mobiarch.wordpress.com/2012/08/09/doing-post-redirect-get-pattern-in-jsf-2/
您将希望原始的JSF链接调用一个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";
}
希望这可以帮助您入门。