1

私のアプリケーションでは、情報とエラー メッセージを表示するためのメッセージ バーを実装しました。これは、画面のナビゲーションが発生すると閉じます ( window.onunloadイベントによってトリガーされる JavaScript 関数)。

いくつかの場所で、画面を更新せずに特定の modalpanel をレンダリングするためにa4j:commandButtonを実装しました。このような場合、既存のメッセージ バーは残り (画面の更新がないため!!!)、新しいメッセージ バーが追加されます。

a4j:commandButtonの属性「onClick() 」の実装についてはよく知っていました。既存のすべてのボタンに実装するのは大変かもしれません。onunload javascript 関数やonClick()機能を記述する必要がないように、サーバー側で (可能であれば PhaseListener で) 1 回限りの実装が必要です。

ajax シナリオでサーバー側からメッセージ バーを制御する方法について、簡単なアイデアを教えてもらえますか?

前もって感謝します。!!!

4

1 に答える 1

0

あなたがサーバー側の解決策を尋ねたことは知っていますが、この問題に対する比較的簡単なクライアント側の解決策があります。

「onClick」のすべてまたは一部のボタン要素に関数を追加する場合は、次のコードを使用してみてください。

クリックイベントに追加される関数に置き換えます。フォームの名前に置き換えます(パラメーターとして渡すことができます)

ところで、このコードは IE FF CHROMEなどをサポートしています。

function addFunctionToAllButtons()
{
    var buttons = document.*YourForm*.getElementsByTagName("button"); 
    for(i=0; i<buttons.length; i++)
    {
        if(buttons[i].id =='yourButtonId')
        {
        attachEvent(buttons[i],'click',*yourFunction*,false);
        }
    }

}


function attachEvent(obj,evt,fnc,useCapture)
{
    if (!useCapture) useCapture=false;
    if (obj.addEventListener)
    {
        obj.addEventListener(evt,fnc,useCapture);
        return true;
    }
    else if (obj.attachEvent) 
        return obj.attachEvent("on"+evt,fnc);
    else
    {
        MyAttachEvent(obj,evt,fnc);
        obj['on'+evt]=function(){ MyFireEvent(obj,evt) };
    }
} 

- 編集

子ページをサポートするには、次の行で参照するボタン ID に特に注意する必要があります。

if(buttons[i].id =='yourButtonId')

そしてフォームIDへ

お役に立てれば。

于 2011-02-14T12:48:03.523 に答える