Jsf 为什么我得到空参数值?
我的web应用程序中的参数有问题。在某个页面(index.xhtml),我有: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
当我运行应用程序并转到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
}
}