拦截器是运行在action之前吧!此时还没有往session中设置值,map.get("user")==null应该等于true的。

解决方案 »

  1.   

    我觉得也是这样 ,我把execute里的内容放在validate里面就可以了,但网上不是有好多这样做的吗,怎么他们就成功了哦
      

  2.   

    你看一下拦截器的排列顺序就知道了validate拦截器是排在你自定义的拦截器之前的,所以先执行!这样session就有东西了而你放到action的execute中的话,是后于你自定义的拦截器执行,而这里每次都返回login.action,所以永远也执行不到你的execute
      

  3.   

    拦截器是运行在action之前吧!此时还没有往session中设置值,map.get("user")==null应该等于true的。
      

  4.   

    你看一下拦截器的排列顺序就知道了validate拦截器是排在你自定义的拦截器之前的,所以先执行!这样session就有东西了 而你放到action的execute中的话,是后于你自定义的拦截器执行,而这里每次都返回login.action,所以永远也执行不到你的execute
      

  5.   

    但是我把我定义的拦截器放在默认的后面也还是一样execut()没有执行呀
      

  6.   

    但我把自定义拦截器放在默认的后面 ,execute()一样还是没有执行呀
      

  7.   

    execute()是action中的方法,所以要执行完所有的拦截器之后才能执行!!
    所有的拦截器包括“默认的拦截器”和“你自定义的拦截器”,所以每次都执行不到action呢,就被你自定义的拦截器给拦截后返回了!
      

  8.   

    <! DOCTYPE struts PUBLIC
            "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
            "http://struts.apache.org/dtds/struts-2.0.dtd" > 
    < struts > 
        < include file ="struts-default.xml" />    
        < package name ="InterceptorDemo" extends ="struts-default" > 
            < interceptors > 
                < interceptor name ="auth" class ="tutorial.AuthorizationInterceptor" /> 
            </ interceptors > 
            < action name ="Timer" class ="tutorial.TimerInterceptorAction" > 
                < interceptor-ref name ="timer" /> 
                < result > /Timer.jsp </ result > 
            </ action > 
            < action name ="Login" class ="tutorial.Login" > 
                < result type ="chain" > AuthorizatedAccess </ result > 
            </ action > 
            < action name ="AuthorizatedAccess" class ="tutorial.AuthorizatedAccess" > 
                < interceptor-ref name ="auth" /> 
                < result name ="login" > /Login.jsp </ result > 
                < result name ="success" > /ShowRole.jsp </ result > 
            </ action > 
        </ package > 
    </ struts > 
    你换换形式试试!!!