0

I18N が必要な JBoss Portal 2.5.4 で構築されたポータルがあります。login.jsp ページ (portal-server.war にあります) に、言語スイッチを追加しました。このページのリンクの 1 つは、パスワードを忘れた機能へのリンクです。

ルック アンド フィールに関連する理由から、ForgetPassword ページは、JBoss Portal 内の最大化されたポートレットとして実装されています。しかし、ログインが行われていないため、明らかにユーザー オブジェクトはまだありません。

では、ユーザーが login.jsp で選択したロケール情報を Forget Password jsp に渡すにはどうすればよいでしょうか。

私はもう試した:

  • セッション変数 (いいえ、それらは戦争をまたがりません)
  • Cookie (JBoss Portal がそれらを飲み込みます)
  • URL パラメーター (JBoss Portal もそれらを飲み込みます)
  • System.setProperty() - ForgetPassword jsp に到達するまでに、それらはリセットされます。

これはすべて Windows Vista または 2003 で実行されています。

私が見逃している明らかなテクニックはありますか?URL パラメーターを取得できるように、ForgetPassword ページをサーブレットとして再編成する必要がありますか?

4

1 に答える 1

0

わかりました、これを行うための 1 つのメカニズムを見つけました - portal-object.xml で新しいポートレット ウィンドウ (ForgotPasswordWindow_de) を作成します。

<window>
    <window-name>ForgotPasswordWindow_de</window-name>
    <instance-ref>UserMgmtPortletInstance_de</instance-ref>
    <region>center</region>
<height>0</height>
</window>

これは、portlet-instances.xml 内の新しいポートレット インスタンス (UserMgmtPortletInstance_de) を指し、同じポートレットを指し、lang プリファレンスが定義されています。

<deployments>
   <deployment>
        <instance>
           <instance-id>UserMgmtPortletInstance</instance-id>
           <portlet-ref>UserMgmtPortlet</portlet-ref>
           <preferences>
            <preference>
                <name>lang</name>
                <value>en</value>
                <read-only>true</read-only>
            </preference>
           </preferences>
          <security-constraint>
              <policy-permission>     
                <unchecked/>                
                 <action-name>view</action-name>
              </policy-permission>
           </security-constraint>
        </instance>
   </deployment>
   <!-- add new deployment for UserMgmtPortletInstance_de -->
   <deployment>
        <instance>
           <instance-id>UserMgmtPortletInstance_de</instance-id>
           <portlet-ref>UserMgmtPortlet</portlet-ref>
           <preferences>
            <preference>
                <name>lang</name>
                <value>de</value>
                <read-only>true</read-only>
            </preference>
           </preferences>
          <security-constraint>
              <policy-permission>     
                <unchecked/>                
                 <action-name>view</action-name>
              </policy-permission>
           </security-constraint>
        </instance>
   </deployment>
</deployments>

次に、ポートレットの doView() コードで、このプリファレンスを見つけて、属性を設定します。

    String lang = request.getPreferences().getValue("lang", null);

    request.setAttribute("lang", lang);

次に、jsp で属性を確認し、ロケールを設定します。

String locale = (String) request.getAttribute("lang");

すべてを開始するために、ログイン ページにはスイッチがあり、言語がドイツ語の場合、ForgotPasswordWindow_en の代わりに ForgotPasswordWindow_de を呼び出します。

于 2009-02-23T15:37:46.720 に答える