使用的是JSF 1.2。我有一个servlet。当这个servlet被命中时,我在doPost中从请求参数中获取数据,我需要在bean中设置它,以便我可以在xhtml页面上显示它。
我的代码如下所示。
userId= request.getParameter("userID");
MyBean myBean = new MyBean();
myBean.initialize(userId);
在myBean的initialize方法中,我将userId值设置为globalVariable。
在我的bean日志中,将打印globalVariable值。但它没有显示在xhtml页面上。
在doPost方法中重定向到xhtml页面,如下所示,
RequestDispatcher dispatcher = request.getRequestDispatcher("/jsp/html/index.jsf");
dispatcher.forward(request, response);
在index.xhtml页面中,我有
<h:outputText value="#{myBean.globalVariable}"></h:outputText>
在我的phaselistener中我没有做任何事情。我只是有beforPhase方法。
为什么我无法在jsf页面中打印该值但能够在登录bean中打印该值?
答案 0 :(得分:1)
在转发之前,您需要将bean放在范围内,正好是JSF期望的范围。
如果它是请求范围的bean,请使用HttpServletRequest#setAttribute()
。
request.setAttribute("myBean", myBean);