Note that there are some explanatory texts on larger screens.

plurals
  1. POStruts2 action could not execute when redirect (with interceptor) an action to other
    primarykey
    data
    text
    <p>I send a request to the <code>ActLand</code>, then <code>intercept()</code>, if not logged in then redirect to <code>Login.jsp</code>.</p> <p><strong>The <code>struts.xml</code>:</strong></p> <p></p> <pre><code>&lt;struts&gt; &lt;package name="default" extends="struts-default"&gt; &lt;interceptors&gt; &lt;interceptor name="login" class="com.interceptor.LoginInterceptor"/&gt; &lt;interceptor-stack name="loginStack"&gt; &lt;interceptor-ref name="login"/&gt; &lt;/interceptor-stack&gt; &lt;/interceptors&gt; &lt;default-interceptor-ref name="loginStack"/&gt; &lt;global-results&gt; &lt;result name="loginRedirect" type="redirect"&gt;/login.jsp&lt;/result&gt; &lt;/global-results&gt; &lt;action name="ActLand" class="com.action.ActLand"&gt; &lt;result name="ok"&gt;/index.jsp&lt;/result&gt; &lt;/action&gt; &lt;action name="ActLogin" class="com.action.ActLogin"&gt; &lt;result name="ok"&gt;/index.jsp&lt;/result&gt; &lt;result name="fail"&gt;/login.jsp&lt;/result&gt; &lt;/action&gt; &lt;/package&gt; &lt;/struts&gt; </code></pre> <p><strong>The interceptor:</strong></p> <pre><code>public class LoginInterceptor extends AbstractInterceptor { @Override public String intercept(final ActionInvocation invocation) throws Exception { Map&lt;String, Object&gt; session = ActionContext.getContext().getSession(); int userId = -1; if (session.get("userId") != null) { userId = Integer.parseInt(session.get("userId").toString()); } Object action = invocation.getAction(); if (userId &lt; 0) { return "loginRedirect"; } else if (!(action instanceof ActLogin)) { return "loginRedirect"; } return invocation.invoke(); } </code></pre> <p><strong>The Error:</strong></p> <pre><code>SEVERE: Could not execute action: /ActLand java.lang.IllegalStateException at org.apache.catalina.connector.ResponseFacade.sendRedirect(ResponseFacade.java:473) at javax.servlet.http.HttpServletResponseWrapper.sendRedirect(HttpServletResponseWrapper.java:138) at org.apache.struts2.dispatcher.ServletRedirectResult.sendRedirect(ServletRedirectResult.java:217) at org.apache.struts2.dispatcher.ServletRedirectResult.doExecute(ServletRedirectResult.java:197) at org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:186) at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:362) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:266) at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52) at org.apache.struts2.components.ActionComponent.executeAction(ActionComponent.java:289) at org.apache.struts2.components.ActionComponent.end(ActionComponent.java:172) at org.apache.struts2.views.jsp.ComponentTagSupport.doEndTag(ComponentTagSupport.java:42) at org.apache.jsp.index_jsp._jspx_meth_s_005faction_005f0(index_jsp.java:152) at org.apache.jsp.index_jsp._jspx_meth_s_005fif_005f0(index_jsp.java:120) at org.apache.jsp.index_jsp._jspService(index_jsp.java:83) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:419) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:88) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:399) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:317) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:204) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:182) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:311) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) at java.lang.Thread.run(Thread.java:722) </code></pre> <p>I'm sorry, I believe I did every thing that I had been instructed to, but things are complicated...</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload