Am使用JSF 1.2。Am设置如下参数,
<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页面中检索像how am try这样的参数吗?
如果是,如果创建了新会话,参数值会丢失吗?
问候,
重定向基本上指示Web浏览器发送一个全新的HTTP请求。原始JSF请求中的请求参数在新的JSP请求中不再可用。您还需要显式地将原始请求参数与新请求一起传递。
String userData = externalContext.getRequestParameterMap().get("userData");
String link = "http://myDomain/myJSP.jsp?userData=" + URLEncoder.encode(userData, "UTF-8");
externalContext.redirect(link);