Jsf GET请求参数在ExternalContext#getRequestParameterMap()中不可用

Jsf GET请求参数在ExternalContext#getRequestParameterMap()中不可用,jsf,http-request-parameters,Jsf,Http Request Parameters,我试图做的是能够通过URL传递一个参数,并在是否传递该参数时执行某些操作。我正在使用JSF+Richfaces 例如,如果我尝试访问http://localhost/myapp/home.jsf public class My Bean { private boolean printHello = false; public MyBean(){ FacesContext fc = FacesContext.getCurrentInstance(); String printHello

我试图做的是能够通过URL传递一个参数,并在是否传递该参数时执行某些操作。我正在使用JSF+Richfaces

例如,如果我尝试访问http://localhost/myapp/home.jsf

public class My Bean {

private boolean printHello = false;

public MyBean(){
  FacesContext fc = FacesContext.getCurrentInstance();
  String printHello = fc.getExternalContext().getRequestParameterMap().get("printHello");
  if (printHello != null && printHello.equals("true")
    printHello = true;
}

public void myFunction() {
  if (printHello)
    System.out.println("test");
    //other stuff
    //ask for some user input
}

//When user validate his input, this function is called
public void myFunction2() {
  //some stuff
}
}

当我在myFunction()中请求用户输入时,我的页面上也有一个链接,可以重新开始整个过程。单击该链接后,然后手动将url更改为http://localhost/myapp/home.jsf?printHello=true

bean不会被清除,我的printHello标志仍将设置为false

此外,当再次执行以下操作时:

FacesContext fc = FacesContext.getCurrentInstance();
String printHello = fc.getExternalContext().getRequestParameterMap().get("printHello");

printHello将为空,这是我无法得到的。可能是因为并非所有页面都被重新呈现?

JSF2可以使用
()处理GET参数,如果您需要处理GET参数(将它们绑定到支持bean),这里有两个相关问题:


  • 另外,为了让fc.getExternalContext().getRequestParameterMap().get(“printHello”)工作,请将代码移动到带注释的
    @PostConstruct
    方法,而不是构造函数,并确保支持bean具有适当的作用域。

    JSF2可以使用
    ()如果需要处理GET参数(将它们绑定到支持bean),下面是两个相关的问题:


  • 另外,为了让fc.getExternalContext().getRequestParameterMap().get(“printHello”)工作,请将代码移动到
    @PostConstruct
    带注释的方法,而不是构造函数,并确保支持bean具有适当的作用域。

    您的bean在哪个作用域?你的构造函数每次都被调用吗?也许你可以发布一些JSFXHTML源代码?你的bean在什么范围内?你的构造函数每次都被调用吗?也许你会发布一些jsf xhtml源代码?正确答案,但当我看到类似
    fc.getExternalContext().getRequestParameterMap().get(“printHello”)
    的内容时,我想放弃jsf的正确答案,但当我看到类似
    fc.getExternalContext().getRequestParameterMap().get(“printHello”)的内容时
    我正在考虑放弃JSF