尝试从页面A导航到页面B.导航到页面B时使用configurableNavigationHandler传递参数,如下所示
public void navigate(String outcome) {
FacesContext fc = FacesContext.getCurrentInstance();
ConfigurableNavigationHandler nav = (ConfigurableNavigationHandler) fc
.getApplication().getNavigationHandler();
nav.performNavigation(outcome+"?faces-redirect=true&includeViewParams=true&oldPage=hello");
}
在页面B中,当我单击后面时,它必须检索参数值并将用户导航到相应的页面。但是在检索请求参数时获取空值。
public String navigateToOldPage() {
FacesContext fc = FacesContext.getCurrentInstance();
String oldPage = fc.getExternalContext().getRequestParameterMap().get("oldPage");
return oldPage;
}
有人可以建议我吗?
答案 0 :(得分:0)
您基本上是在尝试访问错误的HTTP请求中的oldPage
参数,即在页面B中提交表单而不是显示页面B本身的表单。
基本上有两种选择:
在使用<f:viewParam>
显示页面B期间将请求参数设置为bean属性:
<f:metadata>
<f:viewParam name="oldPage" value="#{bean.oldPage}" />
</f:viewParam>
with(@ViewScoped
bean)
public String navigateToOldPage() {
return oldPage;
}
使用UICommand
保留负责表单提交的<f:param>
组件中的请求参数:
<h:commandButton ... action="#{bean.navigateToOldPage}">
<f:param name="oldPage" value="#{param.oldPage}" />
</h:commandButton>
或者,如果它只是一个真正的GET请求,那么使用<h:button>
(或<h:link>
)
<h:button ... outcome="#{param.oldPage}" />