我要做的是能够通过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将为null,这就是我没有得到的。也许是因为并非所有页面都被重新渲染?
答案 0 :(得分:1)
JSF2可以使用<h:link>
和<h:button>
处理GET参数(check this page)如果你需要处理GET参数(将它们绑定到你的支持bean),这里有两个相关的问题:< / p>
另外为了让fc.getExternalContext()。getRequestParameterMap()。get(“printHello”)工作,将代码移动到@PostConstruct
带注释的方法而不是构造函数,并确保你的支持bean有一个正确的范围。