使用的是JSF 1.2。我设置的参数如下,
<h:commandLink id="sendParam" action="#{myBean.redirectToLogin}" >
<f:param name="userData" value="#{myBean.msg}"></f:param>
</h:commandLink>
我想在某个其他Web应用程序的JSP页面中检索参数(userData)。我正在编写上面代码的Web应用程序中的JSP页面(比如myJSP.jsp)。代码如下,
String link = http://myDomain/myJSP.jsp
ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
externalContext.redirect(link.trim());
最重要的是:当JSP页面被命中时,将创建一个新的会话ID。 (这是因为我的网络应用程序中的一些其他要求)
尝试使用myJSP.jsp中的以下代码检索参数。
String requestmsg = (String) req.getParameter("userData");
但是,这总是空的。
我的理解是否正确f:param如何运作?我的意思是,我们可以在一些jsp页面中检索参数,比如我在尝试吗?
如果是这样,如果创建新会话,参数值是否会丢失?
此致
答案 0 :(得分:0)
重定向基本上指示webbrowser发送全新的HTTP请求。原始JSF请求中的请求参数不再可用于新的JSP请求中。您还需要在新请求中显式传递原始请求参数。
String userData = externalContext.getRequestParameterMap().get("userData");
String link = "http://myDomain/myJSP.jsp?userData=" + URLEncoder.encode(userData, "UTF-8");
externalContext.redirect(link);