有这样一堆页面。
页面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页面,让原来的输入的值保持住。
页面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页面,让原来的输入的值保持住。
2:校验这块我建议你是否生成html的时候顺带的生成js进行校验?
1.你可以将这20个页面的的form表单的字段生成一个actionForm,这样是可以完成的。
但工作量有点大。不过可以考虑ls说的动态formBean这个可以完成的。
2.你的验证可以根据请求的方法,然后获得方法名称,根据方法名称然后再跳转到相应的jsp中
struts1的ActionForm的验证方法不是有一个request嘛,你用request就可以通过请求的地址
获得方法名称,根据方法名称验证失败后跳转到相应的jsp,顺便把值放到request中即可。
还有一种方法是你可以在struts-config.xml配置多个action的标签,但都是同一个action。每个action
标签对应的验证失败跳转的input页面都不同,分别对应的是20个jsp。