有这样一堆页面。
页面id: p01 , p02 , p03 , ......,p20
希望只做一个action,一个jsp来处理这20个页面。action代码:
//传入页面:id
List list = getResultList(id);
request.setAttribute("list",list);
return mapping.findForward("page");/** 
  * id = p01 时,list的值:
  * {
  *  {[0]=Item  zwname="摘要" ywname="zy" size="3" default="001"}
  *  {[1]=Item  zwname="编号" ywname="bh" size="9" default=""}
  *  {[2]=Item  zwname="系统" ywname="xt" size="1" default=""}
  *  {[3]=Item  zwname="简称" ywname="jc" size="5" default=""}
  * }
  *
  * id = p02 时,list的值:
  * {
  *  {[0]=Item  zwname="名称" ywname="mc" size="2" default=""}
  *  {[1]=Item  zwname="状态" ywname="zt" size="1" default="1"}
  *  {[2]=Item  zwname="场次" ywname="cc" size="3" default=""}
  * }
  *
  * id = p03 时,list的值:
  * {
  *  {[0]=Item  zwname="设备" ywname="sb" size="2" default=""}
  *  {[1]=Item  zwname="编码" ywname="bm" size="1" default=""}
  *  {[2]=Item  zwname="地址" ywname="dz" size="3" default=""}
  *  {[3]=Item  zwname="标志" ywname="bz" size="1" default="1"}
  *  {[4]=Item  zwname="级别" ywname="jb" size="3" default=""}
  *  {[5]=Item  zwname="说明" ywname="sm" size="1" default=""}
  *  {[6]=Item  zwname="部门" ywname="cc" size="3" default=""}
  * }
  *  ......... 应该看的出规律吧
  */jsp代码://
<html:form action="/togo" method="post">
  <logic:iterate id="it" name="list" >
     <bean:write name="it" property="zwname"/>:
     <input type="text" 
            name="<c:out value="${it.ywname}"/>"      
            size="<c:out value="${it.size}"/>" 
            value="<c:out value="${it.default}"/>"> 
  </logic:iterate>
  <html:submit>提交< ml:button>        
  <html:reset>取消< ml:reset>
< ml:form>解析成html代码:以页面id: p01 为例:
<form action="/togo.do" method="post">
   摘要:<input type="text" name="zy" size="3" value=""> 
   编号:<input type="text" name="bh" size="9" value=""> 
   系统:<input type="text" name="xt" size="1" value=""> 
   简称:<input type="text" name="jc" size="5" value="">    
   <input type="submit" value="提交">
   <input type="reset" value="取消">
</form>以页面id: p02 为例:
<form action="/togo.do" method="post">
   名称:<input type="text" name="mc" size="2" value=""> 
   状态:<input type="text" name="zt" size="1" value="1"> 
   场次:<input type="text" name="cc" size="3" value="">  
<input type="submit" value="提交"><input type="reset" value="取消">
</form>问题来了:
1.当我往几个text框输入值,再点提交的时候,togo这个action怎样得到我输入的值?
如果大家看懂了的话,应该知道不同页面text框的数量,name是不一样的。
所以做actionform来传值的话,不可行吧。
2.如果要做到回显数据呢?就是在togo这个action中检验不通过时,
就回到这个jsp页面,让原来的输入的值保持住。

解决方案 »

  1.   

    1:记得struts里面有个动态的formBean吧. 用那个可能可以解决你的问题.!
    2:校验这块我建议你是否生成html的时候顺带的生成js进行校验?
      

  2.   


    1.你可以将这20个页面的的form表单的字段生成一个actionForm,这样是可以完成的。
    但工作量有点大。不过可以考虑ls说的动态formBean这个可以完成的。
    2.你的验证可以根据请求的方法,然后获得方法名称,根据方法名称然后再跳转到相应的jsp中
    struts1的ActionForm的验证方法不是有一个request嘛,你用request就可以通过请求的地址
    获得方法名称,根据方法名称验证失败后跳转到相应的jsp,顺便把值放到request中即可。
    还有一种方法是你可以在struts-config.xml配置多个action的标签,但都是同一个action。每个action
    标签对应的验证失败跳转的input页面都不同,分别对应的是20个jsp。
      

  3.   

    在struts1里面不是有个类支持一个action里面有多个方法吗,叫什么类我也记不太清楚了,反正有一个