2016-03-29 11 views
3

Bir sayfada <sj:tabbedppanel> var. Oturumun ardından, sekmeli panelin başka bir sekmesine tıklamaya çalışan oturum zaman aşımı, kullanıcıyı oturum açma sistemine yönlendirmelidir.<sj:tabbed> panel, onErrorTopics'u başlatmıyor. Lütfen aşağıya bakın ve bu sorunu nasıl gidereceğiniz konusunda bana rehberlik edin. Yangın hatası görüyorum ki, 403 hatası atılıyor ama jsp'de yakalayamıyorum. Aynı konuda yardıma ihtiyacınız var.Struts2 jQuery sekmeli panel zaman aşımına uğramıyor olayları tetikleme

struts.xml

<action name="secondPanel" class="com.xxx.secondPanelAction"> 
     <interceptor-ref name="sampleDefaultStack" /> 

     <result>/jsp/secondPanel.jsp</result> 
     <result name="login" type="httpheader"> 
      <param name="error">403</param> 
      <param name="errorMessage">User session expired  </param> 
     </result> 
    </action> 

jsp

<sj:tabbedpanel id="remotetabs" selectedTab="0" show="true" hide="'fade'" collapsible="true" sortable="true" onErrorTopics="loadError"> 
    <sj:tab id="tab2" href="%{createUrl}" key="label.create" onErrorTopics="loadError"/> 
    <sj:tab id="tab1" href="%{updateUrl}" key="label.update" onErrorTopics="loadError"/> 
</sj:tabbedpanel> 

<script type="text/javascript" > 
    $(document).ready(function() { 
     $.subscribe('loadError', function(event, data) { alert('in error'); 
     var status = event.originalEvent.status; 

     if(status == 403) { 
      window.location.href = "/Sample/login.action"; 
     } 
    }); 
</script> 
+0

Javascript işlevinizi giriyor musunuz? Var durumunuzun değeri hangisidir? –

+0

Hayır, javascript işlevini girmiyorum. – user3761541

+0

'' ürününüzde 'var mı? –

cevap

2

ben ne bulmak burada biraz testi yapılmış ve var.

Basit bir sj:div kullanmayı deneyelim, ki bu daha basit. sekmesi:

<sj:div href="/security/login.ib" onErrorTopics="loadError" targets="test">Test</sj:div> 

    $.subscribe('loadError', function(event, data) { 
     alert('some error happend'); 
     if(event.originalEvent.request.status){ 
      var status = event.originalEvent.request.status; 
      alert(status); 
     } 
    }); 

Eğer event.originalEvent.request.status Geri

sj:tab için ....

sj kullanmalıdır değil ediniz: Eğer status:403 ile httpheader sonucu kullanırsanız o zaman gibi bir şey kullanabilirsiniz onAlwaysTopics veya onErrorTopics ile çalışmaz, bir hata gibi görünüyor. Ancak, onCompleteTopics'u kullanabilir veya onChangeTopics olabilir.

<sj:tabbedpanel id="remotetabs" show="true" hide="'fade'" collapsible="true" sortable="true" onCompleteTopics="loadError" > 

Ama httpheader sonucu kullanamazsınız. status:403 ile loadError hiç çağrılmayacaktır.

Böylece jsp'nizde onCompleteTopics'u kullanabilir ve ne yapılacağını bilmenizi sağlayacak bir jsona dönebilirsiniz.

Yoksa sekmeleri değiştirdiğinizde

$(document).ajaxError(function(e, xhr, settings, exception) { 

    if (xhr.status == 403) { 
     //Do what you want 

    } 

} 

yukarıdaki ajaxError kalmaz, her ajaxError için çağrılır değil ediniz kullanabilirsiniz. settings.url'u kullanarak yardımcı olabilirsiniz.

+0

Ayrıca bkz. [Başarılar verisi ile Struts 2'de kullanmak için hata mesajı arasındaki farkı belirleme] (http://stackoverflow.com/a/20857989/573032). –

İlgili konular