将请求参数从Managed Bean传递到A jsf页面

时间:2011-02-02 12:20:27

标签: java jsf jsf-2

我是JSF 2.0的新手。我遇到了以下问题。我有一个页面 调用托管bean动作方法。在那我做一些自定义处理和它 导航到另一个xhtml页面。现在的问题是,在转移到下一个xhtml之前 页面,我也需要传递一些参数。我使用了以下内容 方法

1-将该变量放入requestMap并尝试以这种方式访问​​页面

<h:outputText value="#{param['userid']}"/>

它不起作用。然后有人告诉我JSF 2.0中没有标准的方法可以通过 请求参数以及URL,因此请尝试将其作为servlet请求传递。我感到很震惊 代码如下

 ServletRequest request = (ServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
    ServletResponse response = (ServletResponse)FacesContext.getCurrentInstance().getExternalContext().getResponse();
             //("user",user);
    //ServletRequest request = (ServletRequest)context.getRequest();
    request.setAttribute("userid", "prithvi");
    System.out.println("Came here");
    RequestDispatcher rd = request.getRequestDispatcher("testf.xhtml");
    try {
        rd.forward(request, response);
    } catch (ServletException ex) {
        Logger.getLogger(TestFlashScope.class.getName()).log(Level.SEVERE, null, ex);
    } catch (IOException ex) {
        Logger.getLogger(TestFlashScope.class.getName()).log(Level.SEVERE, null, ex);
    }

我尝试以同样的方式访问,但没有运气。没有显示任何值。有人可以帮助我 实现这个解决方案。

BR, 大地

2 个答案:

答案 0 :(得分:4)

只需将结果设置为bean属性。

page1.xhtml

<h:commandButton value="Submit" action="#{bean.submit}" />

豆:

public String submit() {
    this.result = "blah";
    return "page2"
}

page2.xhtml

<h:outputText value="#{bean.result}" />

(假设您在<redirect/>中未使用<navigation-case>,如果有的话)

答案 1 :(得分:1)

你应该使用Flash Scope。有关详细信息,请查看this博文。