1

確認ポップアップを生成するコマンド ボタンがあります。確認のテキストは、メッセージ バンドルから取得されます。確認にパラメータを渡すことは可能ですか?

これは私がしようとしているものです:

<h:commandButton value="#{tkmsg.addAccount}" action="#{ebfAccountControllerBean.specifyEbfAddAccount}" 
                        onclick="return confirm('#{tkmsg.confirmAddAccount}');">
            <f:param value="this account"/>
            <f:param value="this email"/>
</h:commandButton>

しかし、うまくいきません。私はただ得る

Are you sure you want to add account {0} with email {1}?

パラメータは OutputText または OutputFormat でのみ機能しますか? これを行う他の方法はありますか?次のステップは、「このアカウント」をフォームのデータに置き換えることです。

4

2 に答える 2

3

アルジャンは良い例を挙げました。別の方法は、そのための JS 関数を自分で作成することです。これは、新しい関数で JSStringプロトタイプを拡張する基本的なキックオフの例です。format()

<script>
    String.prototype.format = function() {
        var args = arguments;

        return this.replace(/\{(\d+)\}/g, function() {
            return args[arguments[1]];
        });
    }
</script>

次のように使用します。

onclick="return confirm('#{tkmsg.confirmAddAccount}'.format('this account', 'this email'));"
于 2011-04-06T21:21:33.383 に答える
3

あなたがしていることは実際にはそのようには機能しません。f:paramJSF には、タグをその EL 式に関連付ける方法がありません。考えてみてください、人間でさえこれを推測することはできません;)

たとえば Tomahawks バッファを使用して、メッセージを EL 経由でアクセス可能なものに前もってレンダリングできます。

<t:buffer into="#{buffer['confirm']}">
   <h:outputFormat value="#{tkmsg.confirmAddAccount}">
      <f:param value="this account"/>
      <f:param value="this email"/>
   </h:outputFormat>
</t:buffer>

#{buffer}リクエストスコープを持つマネージドBeanとして宣言された単純なhasmapです。#{buffer['confirm']}この後、javascript ステートメントで参照できます。

于 2011-04-06T21:15:09.053 に答える