2016-12-23 8 views
3

Я встретил какую-то странную проблему. Кнопка страницы не выполняет SSJS, когда ее щелкают в первый раз после загрузки страницы. Но работает, когда вы нажмете его снова. Я нашел это особенно, когда вы очищаете кеш браузера.SSJS не выполнен на xPage

  1. Попробуйте очистить кэш Chrome (Ctrl + Shift + Del. Clear all).
  2. Перезапустить Chrome.
  3. Попробуйте загрузить эту страницу TEST.xsp. Страница входа первого сервера.
  4. Нажмите «Моя кнопка». Он ничего не делает. Предполагается, например, перенаправить на ту же страницу с новым параметром, например. param1 = true (обязательно он ничего не должен делать, но просто добавьте param1 = true для URL-адреса)
  5. Нажмите его еще раз. Он работает

Что может вызвать подобное поведение? Это может быть любой SSJS не точно context.redirectToPage. Но он работает только тогда, когда вы нажимаете кнопку второй раз. Такая же проблема найдена в FF, но она работает в IE.

<?xml version="1.0" encoding="UTF-8"?> 
<xp:view xmlns:xp="http://www.ibm.com/xsp/core"> 
    <xp:button id="button1" styleClass="btn btn-primary btn-sm" 
     value="My Button" title="My Button"> 
      <span class="glyphicon glyphicon-edit"></span> 
     <xp:eventHandler event="onclick" submit="true" 
      refreshMode="complete" id="eventHandler10"> 
      <xp:this.action><![CDATA[#{javascript:context.redirectToPage("TEST.xsp?param1=true");}]]></xp:this.action> 
     </xp:eventHandler> 
    </xp:button> 
</xp:view> 

Вот мое приложение параметры конфигурации: enter image description here enter image description here

+0

Это то, что вы на самом деле намерены? Вы теряете контекст. Почему бы просто не переключиться в режим редактирования? – stwissel

+0

нет. Это был пример, поэтому вы можете легко увидеть, что он не работает. Любой другой код не работает – VladP

+0

У меня нет проблем с вашим примером XPage. Он перенаправляется при первом нажатии кнопки –

ответ

1

Это помогает, когда вы помещаете его в событие afterPageLoad.

if(!sessionScope.APP_LOADED){ 
    sessionScope.put("APP_LOADED", true); 
    context.reloadPage(); 
}else if(sessionScope.APP_LOADED==false){ 
    sessionScope.put("APP_LOADED", true); 
    context.reloadPage(); 
} 
0

Вы должны установить следующий параметр, то он должен работать, как ожидалось:

enter image description here

+0

, это не проблема перенаправления. это был пример, поэтому вы можете легко увидеть, что он не работает. Любой другой код не работает. И, кстати, этот параметр включен в моем приложении. – VladP

0

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

+0

Хорошо. было ли это CSJS или SSJS? Если SSJS был вариантом сервера? В любом случае я попробую. Спасибо – VladP

+0

Ему нужна активность на стороне сервера, но только минимальный минимум. Нет полного или частичного обновления. –