2012-04-18 3 views
0

Я знаю. Я не должен этого делать. Но ...Как отключить кнопку браузера в Oracle ADF

Мне нужно отключить кнопку «Назад назад» в веб-приложении ADF. Я пытался с этим кодом в Initialize яваскрипта функции на JSPX (мы можем назвать main.jspx):

window.history.forward(1); 

Кнопка возврата не отключается, но если я нажимаю его после посещения главной страницы (например, из страница после главного на главную страницу), она возвращается на вторую страницу. Я бы вообще отказался от кнопки «Назад». Является ли это возможным? Если вы знаете что-то специально для приложения ADF (также без использования javascript), ответ приветствуется.

Спасибо.

+0

короткий ответ, нет: https://forums.oracle.com/forums/thread.jspa?threadID=1104731. Хотя в этой дискуссии есть несколько хороших предложений. – vcsjones

+0

Единственное, что я мог подумать, это открыть новую вкладку/окно, но это, вероятно, будет скорее раздражением, чем было бы полезно. – Travesty3

+0

@vcsjones Да, я прочитал эту страницу (и все остальные размещены на первых 4 или 5 страницах результатов в Google), но я не могу изменить свое приложение с использованием шаблона динамического региона по многим причинам. – Baduel

ответ

0

Вот решение:

У меня есть две страницы: page1.jspx и page2.jspx. Я определил потока управления-случай в ADFC-config.xml:

<?xml version="1.0" encoding="windows-1252" ?> 
<adfc-config xmlns="http://xmlns.oracle.com/adf/controller" version="1.2"> 
    <view id="page1"> 
    <page>/page1.jspx</page> 
    </view> 
    <view id="page2"> 
    <page>/page2.jspx</page> 
    </view> 
    <control-flow-rule id="__1"> 
    <from-activity-id>page1</from-activity-id> 
    <control-flow-case id="__2"> 
     <from-outcome>navigate</from-outcome> 
     <to-activity-id>page2</to-activity-id> 
    </control-flow-case> 
    </control-flow-rule> 
</adfc-config> 

Итак, action="navigate" я можно перемещаться на страницу 2 со страницы 1.

Теперь page1.jspx является:

<?xml version='1.0' encoding='UTF-8'?> 
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1" xmlns:f="http://java.sun.com/jsf/core" 
      xmlns:af="http://xmlns.oracle.com/adf/faces/rich"> 
    <jsp:directive.page contentType="text/html;charset=UTF-8"/> 
    <f:view> 
     <af:document title="Page 1" id="d1"> 
      <af:form id="f1"> 
       <af:panelStretchLayout id="psl1"> 
        <f:facet name="center"> 
         <af:commandLink action="navigate" id="cl1"> 
          Navigate 
         </af:commandLink> 
        </f:facet> 
       </af:panelStretchLayout> 
       <af:resource type="javascript"> 
        var registerDisableBackButton = function() { 
         disableBackButton(); 
         window.onload = disableBackButton(); 
         window.onpageshow = function (event) { 
          if (event.persisted) { 
           disableBackButton() 
          } 
         } 
         window.onunload = function() { 
          void (0); 
         } 
        } 

        var disableBackButton = function() { 
         window.history.forward(); 
        } 

        var onLoadEvent = function(event) { 
         registerDisableBackButton(); 
        } 
       </af:resource>     
      </af:form> 
      <af:clientListener method="onLoadEvent" type="load"/> 
     </af:document> 
    </f:view> 
</jsp:root> 

После перехода к page2.jspx при нажатии на кнопку возврата вы будете снова перенаправлены на страницу 2.

Надежда это поможет.

+0

Спасибо за ответ. Я попробую ваше решение. В любом случае с этим решением кнопка «Назад» не отключена, но она перенаправляется только на одну страницу – Baduel

+0

Да, это не отключит кнопку «Назад». Вы не можете отключить ее программно. –

+0

Хорошо, спасибо за разъяснения. – Baduel

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