我想要做的是能够通过 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 将为空,这就是我没有得到的。也许是因为不是所有页面都被重新渲染?