=====WEB.XML==================================================== <!-- Struts2 过滤配置 -->
<display-name>struts2</display-name>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>  
<url-pattern>*.action</url-pattern>
<dispatcher>FORWARD</dispatcher>
<dispatcher>REQUEST</dispatcher>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>
<filter-mapping>
<filter-name>struts2</filter-name>  
<url-pattern>*.jsp</url-pattern>
   <dispatcher>FORWARD</dispatcher>
<dispatcher>REQUEST</dispatcher>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>
===============拦截器============================/**
 * 权限拦截器
 * Mar 30, 2010
 * @author 
 * @email  
 */
public  class SystemLoginFilterInterceptor extends MethodFilterInterceptor{
/**
 * 
 */
private static final long serialVersionUID = 811271410061422017L;
@Override
protected String doIntercept(ActionInvocation invocation) throws Exception {
System.out.println("-------后台权限拦截器--------");
HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession();
DBUser user = (DBUser) session.getAttribute("user");
if(user != null && user.getRank()>0){
return invocation.invoke();
}
return "adminerror";
}
}
==================STRUTS.XML=================================== <action name="*IOPAction" class="com.xxx.action.IOPAction" method="{1}">
            <result name="createIndex">/admin/result.jsp</result> 
            <interceptor-ref name="adminCheckLogin"></interceptor-ref>
</action>
=====================异常=========================================
[ERROR] 2011-02-12 11:03:17,359 [http-8080-Processor20] [org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/test].[default]] - Servlet.service() for servlet default threw exception
java.lang.NullPointerException
at org.apache.struts2.dispatcher.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:123)
at org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:178)
at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:348)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
at com.test.util.SystemLoginFilterInterceptor.doIntercept(SystemLoginFilterInterceptor.java:29)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:221)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:150)
at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:48)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:123)
======我要咨询的问题描述======================================首先请看下struts.xml 
        <result name="createIndex">/admin/result.jsp</result> 是这样的就会报上面的异常。
如果改成<result name="createIndex"   type="redirect">/admin/result.jsp</result>
就不会报错,就是正确的。
请问何解?
为什么会出现这个情况?

解决方案 »

  1.   

    <action name="*IOPAction" class="com.xxx.action.IOPAction" method="{1}">
      <result name="createIndex">/admin/result.jsp</result>  
      <interceptor-ref name="adminCheckLogin"></interceptor-ref>
      <interceptor-ref name="defaultStack"></interceptor-ref></action>
      

  2.   

    <interceptor name="scs" class="com.xxx.util.SystemLoginFilterInterceptor" />
    <interceptor-stack name="adminCheckLogin">
         <interceptor-ref name="scs" />
    <interceptor-ref name="defaultStack" />
    </interceptor-stack>楼上这位哥们,我这样是可以的不?