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

ただし、これは常に null です。

  1. f:param がどのように機能するかについての私の理解は正しいですか? つまり、いくつかのjspページで、どのようにしようとしているかのようなパラメーターを取得できますか?

  2. その場合、新しいセッションが作成されるとパラメーター値は失われますか?

よろしく、

4

1 に答える 1

0

リダイレクトは基本的に、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);
于 2012-07-18T13:24:43.050 に答える