2016-03-29 13 views
3

<sj:tabbedppanel>がページにあります。 セッションがタイムアウトした後、タブ付きパネルの別のタブをクリックしようとすると、ユーザーはログインポージにリダイレクトされます。 <sj:tabbed>パネルがonErrorTopicsを起動していません。下記を参照して、この問題を解決する方法を教えてください。私は403エラーがスローされたが、私はjspでそれをキャッチすることができない火災のバグに見ています。同じように助けが必要です。タイムアウト時にStruts2 jqueryタブ付きパネルがイベントを発生しない

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関数を入力しますか?あなたのバリューステータスの価値はどれですか? –

+0

いいえ、私はjavascript関数に入っていません。 – user3761541

+0

「」に「」がありますか? –

答えて

2

私は私が見つけるものをここにいくつかのテストをしたとしています。

簡単に試してみてください。sj:divどのように簡単ですか。あなたはstatus:403httpheader結果を使用する場合、あなたは次のようにいくつかのことを使用することができます。

<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); 
     } 
    }); 

[戻るsj:tabからevent.originalEvent.request.status

を使用すべきではないしてくださいということ....

SJを:タブがありますonAlwaysTopicsまたはonErrorTopicsで動作しない場合、バグのようです。ただし、onCompleteTopicsを使用するか、onChangeTopicsとすることができます。

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

しかし、httpheaderの結果は使用できません。 status:403では、loadErrorはまったく呼び出されません。

あなたはあなたのJSPでonCompleteTopicsを使用し、何をすべきかを知らせるjsonを返すことができます。

それともあなたは、タブを変更したときに上記ajaxErrorだけでなく、すべてのajaxErrorために呼び出されますないことをしてください

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

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

    } 

} 

を使用することができます。あなたが助けることができるsettings.urlを使用している可能性があります。

+0

「Struts 2で使用する成功データとエラーメッセージの区別」(http://stackoverflow.com/a/20857989/573032) –

関連する問題