динамическое управление содержимым в extlib сходит с ума

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

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

В этом случае у меня есть динамический элемент управления из загруженной extlib, содержащий плагин jquery, который загружает календарь. календарь работает нормально. но если я трижды нажму на навигацию по календарю, а затем после этого попытаюсь перезагрузить элемент управления динамическим содержимым, он выйдет из строя со странным URL-адресом и продолжит перезагрузку. (календарная навигация делает запрос ajax для получения json каждый раз, когда он нажимается)

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

Я прикрепил анимацию проблемы, так как это сложно объяснить.

URL-адрес, который продолжает перезагружаться, выглядит следующим образом: «home» — это xpage, «dynC» — это элемент управления, а «booking» — загруженный контент.

demo.intrapages.com/intrademo.nsf/home.xsp?%24%24ajaxid=home%3A_id1%3AdynC&content=booking&%24%24viewid=!dqeyhl895m!

введите здесь описание изображения

вы можете воспроизвести проблему здесь Я также заметил, что это работает в Firefox


person Thomas Adrian    schedule 14.03.2014    source источник
comment
Как вы контролируете динамическое управление контентом? Используете ли вы хэши или метод show() самого элемента управления через SSJS?   -  person Oliver Busse    schedule 14.03.2014
comment
XSP.showContent(#{id:dynC},бронирование)   -  person Thomas Adrian    schedule 14.03.2014
comment
Вы пытались вместо этого просто использовать метод show() с идентификатором контента? Раньше не использовал CSJS, но SSJS, например getComponent(idOfDynamicControl).show(keyOfFacetPanel)   -  person Oliver Busse    schedule 14.03.2014
comment
Я пробовал версию SSJS, но это та же проблема.   -  person Thomas Adrian    schedule 15.03.2014


Ответы (1)


похоже, что кнопка «Частичное обновление» из календаря мешает частичному обновлению по ссылке бронирования.
Представьте:
Запрос XHR отправлен и не полностью завершен. Второй запрос отправляется и выполняется быстрее. Второй изменяет локальный дом, и функция обработчика первого по завершении не находит хуки, в которые он хочет записать, и повторяет запрос.

Возможное решение:
измените кнопку обновления, чтобы либо игнорировать второй запрос, если первый не полностью выполнен, либо использовать графику счетчика Ajax и серую маску (управление в режиме ожидания).

person stwissel    schedule 14.03.2014
comment
спасибо за ваш ответ, если вы посмотрите в инструменты разработчика, вы увидите, что даже если запрос завершен, он нарушает динамическое обновление элемента управления. но не в первый раз, не во второй раз, а в третий раз. кажется, не имеет значения, сколько времени проходит между щелчками - person Thomas Adrian; 14.03.2014
comment
Хм. Тогда модель на стороне сервера может привести к путанице. - person stwissel; 15.03.2014
comment
Вы упоминаете 3. Может быть связано с xsp.persistence.tree.maxviews . Можете ли вы попробовать увеличить это значение и посмотреть, потребуется ли для этого больше времени? - person Simon O'Doherty; 03.04.2014
comment
Саймон, ты только что решил мою проблему, я установил значение 10, и оно работает намного лучше. Вы хоть представляете, какое влияние может иметь более высокое значение? Если вы добавите свой комментарий в качестве ответа здесь, я буду рад добавить его в качестве решения моей проблемы. еще раз спасибо - person Thomas Adrian; 03.04.2014