通过h:commandLink检索f:param设置的jsp页面中的参数



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");

但是,这总是无效的。

  1. 我对f:param工作原理的理解正确吗?我的意思是,我们可以在一些jsp页面中检索像how am try这样的参数吗?

  2. 如果是,如果创建了新会话,参数值会丢失吗?

问候,

重定向基本上指示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);