Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 2 方法调用后更新URL参数_Jsf 2 - Fatal编程技术网

Jsf 2 方法调用后更新URL参数

Jsf 2 方法调用后更新URL参数,jsf-2,Jsf 2,这应该很简单,但我正在考虑其他问题,我无法找到我的问题的正确答案 我有一个调用myController.load方法的JSF页面: 如果最初未使用此类参数调用页面,则此方法将生成一个放置在myController.id中的id。我的问题是如何使导航栏上的URL反映此更改,即在URL中插入此新参数。基本上: ->浏览到myPage.xhtml ->调用myController.load,设置myController.id=1 ->在URL myPage.xhtml?id=1中反映。理想情况下,无需

这应该很简单,但我正在考虑其他问题,我无法找到我的问题的正确答案

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

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

->浏览到myPage.xhtml

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


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

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

您将希望原始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";
}

希望这能帮助您开始。

那么您在寻找什么答案?我的意思是,我正在尝试从其他一些答案中找到解决方案,例如,但它们似乎都没有解决我的问题problem@user1156544但请注意,滥用重定向以获得所需链接基本上是框架工作原理的真正杀手。源于PHP/HTML世界,我试图模仿这种行为。。。结果证明这是一个非常糟糕的主意,因为如果每次单击后都重定向,则会丢掉部分页面加载的所有好处。。。绕过此问题的一种常见方法是滥用锚定标记,锚定标记可以使用简单的javascript进行修改:即my.domain.com/id=5&mode=test而不是实际参数。在这种情况下,我认为这是可以的,因为我想实际转到另一个页面。事实上,自从我过去做过这件事以来,我一直很傻,我只是不记得了。
// my ActionListener method
public String goToMyPage() {
    myController.setId(1); // assuming myController is declared in scope.

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