Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有get参数的JSF请求范围_Jsf_Parameters_Parameter Passing_Managed Bean - Fatal编程技术网

带有get参数的JSF请求范围

带有get参数的JSF请求范围,jsf,parameters,parameter-passing,managed-bean,Jsf,Parameters,Parameter Passing,Managed Bean,我知道有很多类似的线程,但没有像我这样的线程: 我有一个requestscope bean: @ManagedBean @RequestScoped public class Bean implements Serializable{ private String username = ""; //managed by textbox private String password = ""; //managed by textbox private String id

我知道有很多类似的线程,但没有像我这样的线程:

我有一个requestscope bean:

@ManagedBean
@RequestScoped
public class Bean implements Serializable{
    private String username = ""; //managed by textbox
    private String password = ""; //managed by textbox

    private String id ="-";

    //Load the Parameter as usual:
    @PostConstruct
    public void fetchParams(){
        System.out.println("FETCH PARAMS");
        FacesContext facesContext = FacesContext.getCurrentInstance();
        String id = facesContext.getExternalContext().getRequestParameterMap().get("id");
        if(id == null || id.length() == 0) return;
        setId(id);
    }

    // getters & setters

    public void doSomething(){ //executed when clicked on the sumbit-button on the jsf-site
        StaticFunctions.doSomething(this);
    }
}
该守则规定: 它检索get参数“id”并将其保存到String id中(由String.out确认)

但是当执行doSomething()方法并读取之前存储的“id”并返回“-”(就像什么都没有发生一样)。


为什么会这样?

您的ManagedBean是
@requestScope
,将在请求结束时销毁。执行
doSomething()
时,用户提交表单并启动新请求。 因此,您应该在控制台中看到两次“FETCH PARAMS”,因为创建了两个bean,但是对于第二个请求
id
is
null


您可以找到关于四个JSF作用域的详细解释。

但是有什么解决我的问题的方法吗?如何正确执行doSomething()?用户名和密码执行正确。。。只有id会产生问题(因为它没有文本字段或任何内容?请选择更大的范围或