外部文本不能使用GET请求参数#getRequestParameterMap()

时间:2013-01-03 04:44:34

标签: 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 = 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,这就是我没有得到的。也许是因为并非所有页面都被重新渲染?

1 个答案:

答案 0 :(得分:1)

JSF2可以使用<h:link><h:button>处理GET参数(check this page)如果你需要处理GET参数(将它们绑定到你的支持bean),这里有两个相关的问题:< / p>

  1. https://stackoverflow.com/a/7775203/141438
  2. https://stackoverflow.com/a/3355737/141438
  3. 另外为了让fc.getExternalContext()。getRequestParameterMap()。get(“printHello”)工作,将代码移动到@PostConstruct带注释的方法而不是构造函数,并确保你的支持bean有一个正确的范围。