如题,我把部分代码贴出来,也比较好说明.
首先定义了USER的BEAN,里面就NAME和AGE 2个STRING字段:
private String name = null;
private String age = null;
====================================================
FORM里对应的LIST是 private List<User> userLst = null;
====================================================
之后JSP上处理是:
a.jsp
<Script Language="javascript">  
 function selectAction()
{  
document.forms(0).action="BAction.do";  
document.forms(0).submit();  
}
</Script>
<html:form action="/LAction">
   <html:submit/>
   <logic:notEmpty name="lform" property="userLst">
   <table>
   <logic:iterate id="lst" name="lform" property="userLst" >  
   <tr>
   <td><html:text name="lst" property="name" indexed="true"/></td>
   <td><html:text name="lst" property="age" indexed="true"/></td>
   </tr>  
   </logic:iterate>
   <tr>
    <td><html:text name="lform" property="id"/></td> <!-- id只是FORM里做测试的东西,发现能传送到B.JSP -->
   </tr>
   <tr>
    <td><html:button property="go" value="go" onclick="selectAction()"/></td>
   </tr>
   </table>
    </logic:notEmpty>
</html:form>
====================================================
b.jsp
<html:form action="/BAction">
   <html:submit/>
   <logic:notEmpty name="lform" property="userLst">
   <table>
   <logic:iterate id="lst" name="lform" property="userLst">  
   <tr>
   <td><html:text name="lst" property="name"/></td>
   <td><html:text name="lst" property="age"/></td>
   </tr>  
   </logic:iterate>
   </table>
   </logic:notEmpty>
</html:form>
====================================================
对应的ACTION:
LAction.java
LForm lform = (LForm)form;
List<User> uslst = lform.getUserLst();
if(uslst==null||uslst.size()==0){
User user = new User();
user.setName("name");
user.setAge("age");
uslst = new ArrayList<User>();
uslst.add(user);
lform.setUserLst(uslst);
lform.setId("getme");
}
request.setAttribute("lform", lform); // 设置断点,此时lform里的id和uslst是有值的
return mapping.findForward("a"); //对应跳a.JSP
====================================================
BAction.java
LForm lform = (LForm)form;
String id = lform.getId();// 设置断点,此时lform里的id有值,但uslst =null了.
List<User> uslst = lform.getUserLst();
return mapping.findForward("b"); //对应跳转b.JSP
====================================================
struts-config.xml
<action path="/LAction" type="com.action.LAction" name="lform" scope="request"  <!-- 只能用request -->
validate="false" />
<action path="/BAction" type="com.action.BAction" name="lform" scope="request"  <!-- 只能用request -->
validate="false" />
====================================================
框架用的是STRUTS1.2,服务器用的是TOMCAT5.5,运行过程中没有错误.
另外JSP中用
<html:hidden name="lst" property="name" indexed="true"/>
之类的也试过,无效.
希望能指教下,怎么才能在BAction中接受到LIST里的值?

解决方案 »

  1.   

    从a.jsp跳到b.jsp的时候,从a的Action中把数据放在list中,保存到request中,传到b的Action。
    那样b的Action就能获得a的Action赋的值。
    也就是说,从a.jsp先到a的Action再到b的Action,就OK了。
      

  2.   

    不过我感觉你的laction.java 和baction.java里好像有点乱。
      

  3.   

    也就是说a.jsp对应的Action里会执行两个方法,一个是a.jsp的初始化,另一个就是a到b的跳转,而你的List就是在a到b的跳转方法里赋值。
    不知楼主明白么。
      

  4.   

    可能我没有表达明白,我第一张页面A.JSP有2个按纽,我是在点SUBMIT后,在对LIST赋值的情况下(这时第一张页面会刷新,并把赋的值在页面上显示出来,同时GO BUTTON也出现),再点GO的BUTTON,在第2张页面打断点,发现LIST没能传过来这个情况的.