比如访问index.jsp,
index.jsp的内容是要实现类似转发的功能,去调用aaa Action处理。如果用struts1,我会在index.jsp这样写<jsp:forward page="/aaa.do"/>但是struts2大家用什么办法啊?网上查了几个小时,累了,这步进行不下去,我就要对struts2失去信心了。
strut2应该很强大的阿。

解决方案 »

  1.   

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <%@ page language="java"  pageEncoding="UTF-8"%>
    <html>
    <head>
    <title></title>
    <meta http-equiv="refresh" content="0;URL=index.action"/>
    </head>
    <body>
    </body>
    </html>
      

  2.   

    你说的这个问题好像是jsp的标准功能吧。
    跟用struts没关系。应该可以继续使用。
      

  3.   

    谢谢上面两位,
    首先zidasine先生的方法,你给的代码应该是index.jsp的内容,
    <meta http-equiv="refresh" content="0;URL=index.action"/> 
    这句话,我想你应该是想打
    <meta http-equiv="refresh" content="0;URL=aaa.action"/> 的。于是IE输入/index.jsp,那么就成功进入了aaa的action处理程序。
    运用了0秒redirect很不错。但是由于是redirect,所以我如果在IE
    输入/index.jsp?name=john,那么name的参数必定传不到aaa的
    action里面了,需要一些其他处理了,最好访问/index.jsp的时候,
    直接能dispatch到aaa的action就好了。再是回答一下jinxfei先生的问题。
    <jsp:forward page="/aaa.do"/>当然可以用,而且会把request
    转发)(dispatch)到aaa.do的地方去,
    但是这样做并不会触发struts2的aaa.do对应的action。
    所以结果是页面显示找不到aaa.do这个东西。至于为什么struts2不捕获这个.do呢,原因是struts2的触发机制是
    过滤器(filter)捕获的。而filter默认只在redirect的时候触发,
    在dispatch的时候是不会触发filter的,因此struts2也就“罢工”了。
    可以把过滤器设置为dispatch的时候也触发,但是struts2不会连这种
    傻问题都没有考虑到的。struts2肯定提供了其他解决方法。各位大牛,有没有更好的解决啊。这个问题并不是很难啊。
      

  4.   

    ^_^,不好意思,我有些想当然了,现在虽然也在用struts2,还真没有仔细研究过它的机制呢。我的项目里有不多的几处用到redirect,但都是通过Struts配置result type为redirect,就像:
    <action name="testAction" class="test.Action">
          <result name="anotherLocation" type="redirect">/another.jsp</result>
    </action>
      

  5.   

    哦,楼主好像问的是forward,忽略我的回复吧。
      

  6.   

    <%@ page contentType="text/html; charset=utf-8"%>
    <%@ taglib prefix="s" uri="/struts-tags" %>
    <s:action namespace="/" name="aaa" executeResult="true">
    <s:param name="名称">1111</s:param>
    .......
    </s:action>之前要把aaa定义在namespace的包里
      

  7.   

    我一般使用转发功能时,都是用onload,然后在js中实现的,这个好处多多呢,爱怎么传参就怎么传,非常方便.而直接用标签还真没怎么考虑过,6楼的貌似可行,现在没用到就不去试了,呵
      

  8.   

    这些功能用JS就OK拉!有些功能用JS显示其实挺方便啊!就是页面onload调用一下window.location = "url";
      

  9.   

    多谢大家。
    6楼可行。恕我再多嘴一下,6楼的方法虽然可行,
    但是更类似于插入一个页面。它会跳回来。
    <%@ page contentType="text/html; charset=utf-8"%> 
    <%@ taglib prefix="s" uri="/struts-tags" %> 
    <s:action namespace="/" name="aaa" executeResult="true"> 
    <s:param name="名称">1111 </s:param> 
    ....... 
    </s:action> 
    <其他页面元素>
    所以下面若还有其他HTML代码,则action后继续执行。
    所以还不是完全我要求的转发出去不再回来,
    可能struts2认为单纯的转发出去是很白痴
    的一件事情,或者还有其他方法我还不知道。总之谢谢6楼了,基本可以满足需要。
    也谢谢jinxfei,大家讨论才有长进。还有我为什么不喜欢用JS来做流程控制方面的事,因为JS有大漏勺,
    那就是和浏览器的关系太大,我宁愿JS还是在HTML界面方面多派用场,界面方面
    JS罢工也倒算了,如果流程控制方面JS罢工,那责任就大了。再回到我的提问问题,并不关客户端什么事情,只不过是访问index.jsp以后的程序流程,
    如果服务器返回一个html页面给客户,客户端再用JS控制一下,再提交给服务器,
    这种事情还是避免为好。
      

  10.   

    但我还是不明白,楼主为什么要返回到一个js再forward到另一个地方,而不是直接在action中forward?
      

  11.   

    我没有要返回js再forward到另一个地方,而恰恰相反,我要避免1,7,9楼朋友的情况。
    好了,差不多这个问题结贴了。分给6楼吧。
    有机会jinxfei咱们交个朋友,可以交流交流。