Как убедиться, что функция Javascript вызывается после КАЖДОГО постбэка в Liferay / ICEFaces? - PullRequest
0 голосов
/ 07 апреля 2011

У меня очень мало опыта работы с Liferay и ICEFaces.Мне нужно создать портлет, который вызывает определенную функцию Javascript каждый раз, когда происходит обратная передача.

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

Я попытался поместить фрагмент <script> в тело портлета, и он успешно выполняется при первой загрузке страницы (все в порядке), а также когда постбэк изменяет HTML-содержимое страницы.

Проблема в том, что когда сервер не изменяет HTML-код (т. е. поиск не дал результата, вы выполняете поиск снова и по-прежнему получаетерезультатов нет) функция не выполняется снова.

Даже если бы я мог опубликовать некоторый код, я очень мало представляю архитектуру, на которой построено веб-приложение.То, что я дал здесь, это вся информация, которая у меня есть.Отредактировав функцию javascript для выдачи предупреждений при ее вызове, я обнаружил поведение страницы.

Можете ли вы помочь мне с этим?

Ответы [ 2 ]

2 голосов
/ 10 апреля 2011

Вы пробовали следующее:

<script>
    Ice.onSendReceive('document:body',
        function(){/*Before send ajax request*/},
        function(){/*After receive the response*/}
    );
</script>

Но это решение применимо к каждому вашему запросу ajax, надеюсь, это поможет вам.

1 голос
/ 07 апреля 2011

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

Сначала в свойстве бэк-компонента я создал метод

public String getLoadFunction()
{
    return "functionName("+ new Random().nextDouble() +");";
}

, а затем

<script>
    #{MyViewBean.loadFunction}
</script>

«Просто», ICEFaces настолько умен, что проверяет, был ли HTML изменен или нет при обработке запросов AJAX.Этот прием очень похож на добавление случайного числа к HTTP-URL, чтобы избежать кеширования.

...