输入地址:http://localhost:8080/xxxx/xxx/xxxxx/edcourse.jsp
edcourse.jsp:<s:if test="#request.boolfirst==null">
<s:action name="xxx_xxxxx" namespace="/xxxxx"></s:action>
</s:if>
public String xxxxx(){

try {
if(lecturer.getId()!=null)
{
Lecturer TempLecturer= lecturerBiz.findLecturer(lecturer.getId());
if(TempLecturer!=null)
{
request.put("boolfirst", true);
request.put("TempLecturer", TempLecturer);
return "edcourse";
}
else
{
return "error";
}
}
return "error";
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
// logger.error("类名:"+this.getClass().getName()+
//       "||方法名:"+Thread.currentThread().getStackTrace()[1].getMethodName()+
//       "||错误信息:"+e.toString());
          //输出错误信息到log4j产生的文件中
}
return "error";
}
能保证http://localhost:8080/xxxx/xxx/xxxxx/edcourse.jsp能走到xxxxx方法里面
如果lecturer.getId()不为空的话 能找到值 并且跳转到Struts2配置文件中result name 为edcourse的页面。、
但是lecturer.getId()为空的话 是不是跳转到Struts2配置文件中result name为error的页面。、
问题来了:lecturer.getId()为空的时候 刷新 不会跳转 会走一遍查找过程,不跳转到Struts2配置文件中result name为error的页面。而是在本页、
Why???难道Action只对.action的请求才会跳转么?

解决方案 »

  1.   

    对于你那么多XXXX,我表示看的头晕~
      

  2.   

    看看你web.xml里面的filter-mapping是怎么配置的就知道了!~
      

  3.   


    <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>*.action</url-pattern>
    </filter-mapping>

    <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>*.jsp</url-pattern>
    </filter-mapping>

    <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>*.html</url-pattern>
    </filter-mapping>
      

  4.   

    lecturer.getId()把他放在Session里
      

  5.   

    说实话   有点无奈 
      你配了action干嘛还要在页面内嵌代码
       你还是把你了解的说出来吧  
      

  6.   

    因为执行了一次ACTION以后,即使在刷新页面本来在ACTION有的值一直都存在。
      

  7.   

    Spring 可以配属性的。只存当前的值。
      

  8.   

    function showlist(id)
    { document.location.href="XX/XX/XX!XXX.action?id="+id;
    alert("错误页面");
    document.location.href="XX/XX/XXX!.action";}
      

  9.   

    lecturer.getId()为空的时候 会走一遍查找过程????
      

  10.   


    在struts.xml配置<constant name="struts.action.extension" value="shtml" />
    在web.xml配置
    <filter>
            <filter-name>struts2</filter-name>
            <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
        </filter>    <filter-mapping>
            <filter-name>struts2</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>红色字体是你想要设置的action匹配的url扩展名