Обработка клиентского компонента с сервера во время запроса AJAX - PullRequest
1 голос
/ 03 февраля 2011

В моем приложении реализована панель сообщений для отображения информации и сообщений об ошибках, которая закрывается при возникновении экранной навигации (функция javascript, запускаемая событием window.onunload ).

В нескольких местах я реализовал a4j: commandButton для рендеринга определенной модальной панели без обновления экрана. В этом случае существующая панель сообщений остается (поскольку обновление экрана отсутствует !!!), к ней добавляется новая панель сообщений.

Я очень хорошо знал о реализации a4j: commandButton атрибута " onClick () ". Это может быть беспокойным, чтобы реализовать это во всех существующих кнопках. Мне нужна одноразовая реализация на стороне сервера (если это возможно в PhaseListener), так что мне не нужно писать какую-либо функцию onunload javascript или функцию onClick () .

Может кто-нибудь дать мне краткое представление о том, как управлять панелью сообщений со стороны сервера в сценарии ajax .?

Заранее спасибо. !!!

1 Ответ

0 голосов
/ 14 февраля 2011

Я знаю, что вы спрашивали о решении на стороне сервера, но есть относительно простое решение этой проблемы на стороне клиента, которое, я думаю, вы могли бы предпочесть.

, если вы хотите добавить функцию ко всем или некоторым кнопкамэлементы onClick, вы можете попробовать использовать следующий код:

заменить на вашу функцию, которая будет добавлена ​​в событие click.заменить на имя вашей формы (вы можете передать это в качестве параметра)

кстати, этот код поддерживает 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) };
    }
} 

- Изменить

для поддержки дочерних страниц нам нужно обратить особое внимание на идентификатор Buuton, на который мы ссылаемся в следующей строке:

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

и на Id формы

надеюсь, что этопомогает.

...