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

时间:2012-07-18 09:19:46

标签: jsp jsf

使用的是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");

但是,这总是空的。

  1. 我的理解是否正确f:param如何运作?我的意思是,我们可以在一些jsp页面中检索参数,比如我在尝试吗?

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

  3. 此致

1 个答案:

答案 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);