然而我改成如下:
1.加一个jump.jsp:
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<html>
 <body>
  <logic:forward name="jump"/>
 </body>
</html>
2.配置文件改为:
<global-forwards>
  <forward name="jump" path="/showSalePlan.do"/>
</global-forwards>  <action path="/genSalePlan" type="plan.genSalePlanAction" scope="request">
  <forward name="Success" path="/jump.jsp"/>
</action>
<action path="/adjSalePlan" type="plan.adjSalePlanAction" scope="request">
  <forward name="Success" path="/jump.jsp"/>
</action>流程就变成:
1.welcome.jsp->showSalePlan.do->showSalePlanResult.jsp
2.genSalePlan.do->jump.jsp->showSalePlan.do->showSalePlanResult.jsp
3.adjSalePlan.do->jump.jsp->showSalePlan.do->showSalePlanResult.jsp就是中间通过jsp来过滤,让它递过去,这样就不会有问题。
我不知道Struts为什么要这样才行,那样就不行?

解决方案 »

  1.   

    <struts-config> <form-beans>
    <form-bean name="loginBean" type="login.userLogin"/>
    <form-bean name="regBean" type="login.userInfo"/>
    <form-bean name="quesBean" type="question.question"/>
    </form-beans> <global-forwards>
    <forward name="login" path="/login.jsp"/>
    <forward name="adminlogin" path="/admin/main.jsp"/>
    <forward name="loginok" path="/repare.htm"/>
    <forward name="adminloginok" path="/admin/main.jsp"/>
    <forward name="begin" path="/main.jsp"/>
    <forward name="finish" path="/result.jsp"/>
    <forward name="reg" path="/admin/stu_add.jsp"/>
    <forward name="regfinish" path="/admin/stu_list.jsp"/>
    <forward name="questionfinish" path="/admin/question_list.jsp"/>
    <forward name="question" path="/admin/question_add.jsp"/>
    </global-forwards> <action-mappings>
    <action path="/begin" type="exam.examAction"/>
    <action path="/finish" type="exam.finishAction"/>
    <action path="/login" type="login.loginAction" name="loginBean" scope="request" validate="false" input="/login.jsp" />
    <action path="/admin/login" type="login.loginAction" name="loginBean" scope="request" validate="true" input="/login.jsp" />
    <action path="/admin/reg" type="login.regAction" name="regBean" scope="request" validate="true" input="/admin/stu_add.jsp" />
    <action path="/admin/questionAdd" type="question.questionAction" name="quesBean" scope="request" validate="true" input="/admin/question_add.jsp" />
    </action-mappings>

    <message-resources parameter="MyResource"/>
    </struts-config>
      

  2.   

    应该不能直接在structs-config.xml中forward到一个action
    好象会引起死循环forward
    一般的做法是用一个jsp中转一下。
      

  3.   

    当然可以一个actionForward到另外一个Action,Action是可以组成一个链,当然自己把蛇头咬住了蛇围那就没办法了。
      

  4.   

    几个Action相互调用是可以的,但正如楼上所说的,不要形成死循环了
      

  5.   

    我的没有形成死循环啊。
    只有经过交互才能执行Action的。
    就如:
    1.用户选Add
    2.系统执行Add
    3.系统显示结果
    4.用户选Edit
    5.系统执行Edit
    6.系统显示结果
    只是我发现,Action配置中直接forward到一个Action,第一次执行是没有问题,第二次执行就没有响应。
      

  6.   

    <action path="/showSalePlan" type="plan.showSalePlanAction" scope="request">
      <forward name="Success" path="/showSalePlanResult.jsp"/>   
    </action>
    <action path="/genSalePlan" type="plan.genSalePlanAction" scope="request">
      <forward name="Success" path="/showSalePlan.do"/>
    </action>
    <action path="/adjSalePlan" type="plan.adjSalePlanAction" scope="request">
      <forward name="Success" path="/showSalePlan.do"/>
    </action>
    这种配置没有问题,你在ACTION加个判断,检查下提交控制器映射是否正确,是否是Mapping.findforword("Success");了,你的这种配置不会有问题,我做过N多个这类项目了!可以排除这部分的问题!