С несколько раз при смене вкладки на сервер отправляются два ajax-запроса вместо одного

#jsf-2 #richfaces

#jsf-2 #richfaces

Вопрос:

У меня есть приложение, запущенное в производство. Несколько раз при нажатии на вкладку для переключения наблюдалось, что вместо 1 ajax-запроса выполняется 2 ajax-запроса.

1) Сначала ajax прошел жизненный цикл JSF и загрузил данные, вызвав метод itemChangeListener (dataBean.tabChangeListener) для вкладки и отобразил их в браузере.

2) Второй ajax-запрос запускается внутри браузера без каких-либо действий пользователя. Заметил, что и в этом втором запросе жизненный цикл jsf выполнен успешно. Но здесь метод прослушивания смены вкладки не выполняется.

Это выглядит как странное поведение. Почему он запускает 2 ajax-запроса вместо одного?. Мы также использовали теги jstl, facelets в коде.

Заранее спасибо за любую помощь.

Я устал, включив <a4j:log/> в файле jsf проверку журналов событий ajax.

Даже проверено на вкладке сеть браузера путем фильтрации типов запросов xhr (ajax).

отладка сетевой активности браузера

 <rich:tabPanel switchType="ajax" id="tabPanel" 
                    itemChangeListener="#{dataBean.tabChangeListener}" >
  

Ожидается, что при смене вкладки должен быть запущен только один ajax-запрос.
но на самом деле здесь он запускает 2 ajax-запроса.

Комментарии:

1. Вы можете проверить оба запроса POST, чтобы выяснить, какой именно компонент его запустил: Нажмите на запрос -> Переключиться на вкладку Параметры -> найти javax.faces.source отправленный параметр.

2. @Selaron, спасибо за ваш ответ. javax.faces.source отображается тот же идентификатор клиента (конкретный идентификатор вкладки).

3. Возможно, конечный пользователь дважды щелкнул по заголовку вкладки? Вы пробовали это?

4. @Kukeltje, спасибо за ваш комментарий. Но здесь это не двойной щелчок по заголовку вкладки. Два ajax-запроса отправляются только для одного клика.

5. Не зная, что содержат запросы или откуда они пришли, мы мало чем можем помочь. Запросы отправляются jsf.ajax.request , проверьте, какие методы его вызывают.