我是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, 大地
答案 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博文。