0

我正在使用 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。(这是因为我的 Web 应用程序中的一些其他要求)

我试图通过在 myJSP.jsp 中使用以下代码来检索参数。

String requestmsg = (String) req.getParameter("userData");

但是,这始终为空。

  1. 我对 f:param 如何工作的理解正确吗?我的意思是,我们可以在某些 jsp 页面中检索参数,例如尝试的方式吗?

  2. 如果是这样,如果创建新会话,参数值是否会丢失?

问候,

4

1 回答 1

0

重定向基本上指示网络浏览器发送全新的 HTTP 请求。原始 JSF 请求中的请求参数在该新 JSP 请求中不再可用。您还需要在新请求中显式传递原始请求参数。

String userData = externalContext.getRequestParameterMap().get("userData");
String link = "http://myDomain/myJSP.jsp?userData=" + URLEncoder.encode(userData, "UTF-8");
externalContext.redirect(link);
于 2012-07-18T13:24:43.050 回答