1

Trying to navigation from Page A to Page B. While navigating to page B passing parameter using configurableNavigationHandler like below

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");
}

In Page B when I click on back it has to retrieve the parameter value and navigate the user to the respective page.But getting null value while retrieving the request parameter.

public String navigateToOldPage() {
    FacesContext fc = FacesContext.getCurrentInstance();
    String oldPage = fc.getExternalContext().getRequestParameterMap().get("oldPage");
    return oldPage;     
}

Could anyone please suggest me?

4

1 回答 1

0

您基本上是在尝试访问oldPage错误 HTTP 请求中的参数,即在页面 B 中提交的表单之一,而不是显示页面 B 本身的表单。

基本上有2个选项:

  1. 在显示页面 B 期间将请求参数设置为 bean 属性<f:viewParam>

    <f:metadata>
        <f:viewParam name="oldPage" value="#{bean.oldPage}" />
    </f:viewParam>
    

    与(在@ViewScoped豆子上)

    public String navigateToOldPage() {
        return oldPage;
    }
    

  2. UICommand在负责表单提交的组件中保留请求参数<f:param>

    <h:commandButton ... action="#{bean.navigateToOldPage}">
        <f:param name="oldPage" value="#{param.oldPage}" />
    </h:commandButton>
    

    或者,如果它只需要是一个真正的 GET 请求,那么使用<h:button>(or <h:link>)

    <h:button ... outcome="#{param.oldPage}" />
    
于 2013-01-07T17:59:57.733 回答