java - struts 2 tutorial
Struts2 jquery panel con pestaƱas en tiempo de espera no disparar eventos (1)
He hecho algunas pruebas y aquí lo que encuentro.
Vamos a probar un simple sj:div
que es de alguna manera más simple. Si usa el resultado httpheader
con status:403
, puede usar algo como:
<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);
}
});
Tenga en cuenta que no debe usar event.originalEvent.request.status
Volver a sj:tab
....
La pestaña sj: no funciona con onAlwaysTopics
o onErrorTopics
, parece ser un error. Sin embargo, puede usar onCompleteTopics
o puede estar onChangeTopics
.
<sj:tabbedpanel id="remotetabs" show="true" hide="''fade''" collapsible="true" sortable="true" onCompleteTopics="loadError" >
Pero no puedes usar el resultado de httpheader
. Con status:403
, loadError
no se llamará en absoluto.
De modo que puede usar onCompleteTopics
en su jsp y devolver un json que le permitirá saber qué se debe hacer.
O puedes usar
$(document).ajaxError( function(e, xhr, settings, exception) {
if (xhr.status == 403) {
//Do what you want
}
}
No se debe ajaxError
el ajaxError
anterior para cada ajaxError
, no solo cuando cambias las pestañas. Puede ser que use settings.url
puede ayudar.
Tenga un <sj:tabbedppanel>
en una página. Después de que el tiempo de espera de la sesión intente hacer clic en otra pestaña del panel con pestañas, se debe redirigir al usuario para iniciar sesión en Poage. <sj:tabbed>
panel <sj:tabbed>
no enciende onErrorTopics
. Consulte a continuación y guíeme sobre cómo solucionar este problema. Estoy viendo en error de fuego que se arrojó el error 403, pero no puedo atraparlo en jsp. Necesito ayuda con lo mismo.
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>