2016-07-29 2 views
0

Я использую следующие:состояние ошибки с отображением диалогового управления

Domino Release 9.0.1FP4HF71, 
ExtensionLibrary v16, 
ApplicationLayout control with 'bootstrapResponsiveConfiguration', 
theme: 'Bootstrap3.2.0_flat' 

В конфигурации разметке управления макета приложения У меня есть basicLeafNode для диалогового окна входа в систему.

<xe:this.bannerUtilityLinks> 
    <xe:basicLeafNode label="Login" submitValue="Login"> 
     <xe:this.onClick><![CDATA[XSP.openDialog("#{id:dialogLogin}");]]></xe:this.onClick> 
    </xe:basicLeafNode> 
</xe:this.bannerUtilityLinks> 

Вот разметка со свойствами для моего loginDialog:

<xe:dialog id="dialogLogin" title="Sign In" preventCache="true" 
    preload="true" keepComponents="false" partialRefresh="true" 
    extractContent="true"> 
    ... 
</xe:dialog> 

В основном, когда я нажимаю ссылку Login я получил это диалоговое окно:

normal login dialog

Он отлично работает. Проблема возникает, когда я открываю эту страницу позже после истечения времени ожидания сеанса (или что-то еще не так). Во-первых, управление компоновкой приложений отображает список утилит для «ранее зарегистрированного пользователя» (с именем пользователя и Logout), а затем он сразу же «обновился» со ссылками для анонимного пользователя (Login и Sign up).

Если я нажимаю Login сейчас, то я получаю пустой диалог с заголовком только:

login dialog with empty content part

и следующее сообщение в консоли сервера:

HTTP JVM: WARNING: CLFAD####W: State data not available for /index because no control tree was found in the cache. 

Я пытался изменить свойства для диалогаLogLogin с разными значениями, изменить значение viewState на nostate и закрепить xsp.application.timeout и xsp.session.timeout связей. Но похоже, что я здесь никакого влияния.

После полного обновления страницы мой диалог снова работает отлично.

Любые предложения.

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

ответ

0

Установка viewState="nostate" делает страницу безстоящей, поэтому дерево компонентов никогда не хранится. Если страница оставлена ​​до тайм-аута, диалог и частичное обновление не удастся, это правильное поведение.

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

Содержит компонент Session Alive, который может дать вам то, что вы хотите. Но XPages все еще работает поверх HTTP. Если сеанс HTTP не работает, у вас все еще есть проблема.

+0

Как определить, что сеанс HTTP отключен? Есть ли способ, который, если HTTP-сеанс тайм-аута, затем информирует пользователя о повторном входе в систему или перенаправляет его на страницу входа в систему. –

+0

Paul, есть ли способ перестроить диалог за один раз без обновления страницы? Возможно, это можно сделать в какой-то фазе жизненного цикла jsf, но я недостаточно разбираюсь в этом. Можете ли вы сказать, кто печатает сообщение «Данные о состоянии недоступны»? Это код управления компоновкой приложений? –

+0

@PrashantArkal не с XPages, если приложение не является анонимным доступом.В противном случае любой вызов будет запрашивать аутентификацию через HTTP для доступа к XPage, прежде чем он сможет создать дерево компонентов для этого XPage. –

Смежные вопросы