Jsf GET请求参数在ExternalContext#getRequestParameterMap()中不可用
我试图做的是能够通过URL传递一个参数,并在是否传递该参数时执行某些操作。我正在使用JSF+Richfaces 例如,如果我尝试访问http://localhost/myapp/home.jsfJsf 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
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