Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.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
Jsf 为什么我得到空参数值?_Jsf_Jsf 2_Parameters - Fatal编程技术网

Jsf 为什么我得到空参数值?

Jsf 为什么我得到空参数值?,jsf,jsf-2,parameters,Jsf,Jsf 2,Parameters,我的web应用程序中的参数有问题。在某个页面(index.xhtml),我有: 当我运行应用程序并转到index.xhtml页面时,我会看到backurl:/pages/login.xhtml 但在setLanguage方法中,当我单击并调试应用程序时,第二个参数(backurl)为空 问题在哪里 #{userController.setLanguage('pl', backurl)} 这应该行得通。(没有测试) 有许多方法可以将参数传递给支持bean 你为什么不用这个 <h:comm

我的web应用程序中的参数有问题。在某个页面(index.xhtml),我有:


当我运行应用程序并转到index.xhtml页面时,我会看到
backurl:/pages/login.xhtml
但在
setLanguage
方法中,当我单击并调试应用程序时,第二个参数(
backurl
)为空

问题在哪里

#{userController.setLanguage('pl', backurl)}
这应该行得通。(没有测试)

有许多方法可以将参数传递给支持bean

你为什么不用这个

<h:commandButton action="#{userController.setLanguage}">
    <f:param name="param1" value="value1" />
    <f:param name="backurl" value="#{backurl}" />
</h:commandButton>

然后在你的方法中

    public String setLanguage() {

      Map<String,String> params = 
                FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
      String param1= params.get("param1");
      String backurl= params.get("backurl");
   }
publicstringsetlanguage(){
映射参数=
FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
字符串param1=params.get(“param1”);
字符串backurl=params.get(“backurl”);
}

您可以将视图参数值存储在托管bean中(还可以为引入的
backurl
成员提供访问器)

托管bean应该如下所示:

public class UserController {

    private String backurl;

    public String getBackurl() { return backurl; }

    public void setBackurl(String backurl) { this.backurl = backurl; }

    public void setLanguage(String language) {
        setLocale(new Locale(language));
        System.out.println(backurl); //this refers the variable in the managed-bean
    }

}
使用
#{userController.setLanguage('pl',backurl)}“
,它更简单,并且可以保留方法定义。
    public String setLanguage() {

      Map<String,String> params = 
                FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
      String param1= params.get("param1");
      String backurl= params.get("backurl");
   }
<f:metadata>
    <f:viewParam name="backurl" value="#{userController.backurl}" />
</f:metadata>
action="#{userController.setLanguage('pl')}"/>
public class UserController {

    private String backurl;

    public String getBackurl() { return backurl; }

    public void setBackurl(String backurl) { this.backurl = backurl; }

    public void setLanguage(String language) {
        setLocale(new Locale(language));
        System.out.println(backurl); //this refers the variable in the managed-bean
    }

}