关于struts如何实现跨页面的表单参数的传递呢

本文介绍Struts框架中如何实现跨页面表单参数传递。利用<form-bean>定义ActionForm,通过设置scope为session使表单数据在多个页面间共享。并通过示例展示如何使用<html:form>进行表单提交。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 
关于struts如何实现跨页面的表单参数的传递呢?
1,我们需要和配置文件结合起来看下:
  1. <struts-config>  
  2.   <form-beans >  
  3.     <form-bean name="loginForm" type="prj8_1.form.LoginForm" />  
  4.     <form-bean name="reg1Form" type="prj8_1.form.Reg1Form" />  
  5.   
  6.   </form-beans>  
  7.   
  8.   <global-exceptions />  
  9.   <global-forwards />  
  10.   <action-mappings >  
  11.     <action  
  12.       //attribute="loginForm"  
  13.       input="/login.jsp"  
  14.       name="loginForm"  
  15.       path="/login"  
  16.       scope="request"  
  17.       type="prj8_1.action.LoginAction" />  
  18.     <action name="reg1Form" forward="/p2.jsp" path="/toP2" scope="session"/>  
  19.     <action name="reg1Form" path="/reg1" type="prj8_1.action.Reg1Action" scope="session"/>  
  20.   
  21.   </action-mappings>  
  22.   
  23.   <message-resources parameter="prj8_1.ApplicationResources" />  
  24. </struts-config>  

先来简单介绍下各个标签的作用吧!
a,<form-beans ></form-beans >中套的都是beans是所有bean的集合,也就是所有ActionForm的集合,<form-bean name="loginForm" type="prj8_1.form.LoginForm" />,<form-bean />是单个bean,name属性是一个标识,你可以自己定义,最好还是和ActionForm的名字一样,方便点。type是这个ActionForm的路径了。
b,<global-forwards />全局跳转。
c,  <action-mappings >定义action的映射关系。input表示错误了要跳转到的页面。 name表示把得到的参数给谁打包,显然这里就是给上面的loginForm,所以这个属性就把action和actionForm关联起来。path定义了在jsp中form表单中action添什么。scope可以是request,session,application,这影响actionForm的有效范围。type是action的类路径。
d,<message-resources >国际化资源文件。

2,<action name="reg1Form" forward="/p2.jsp" path="/toP2" scope="session"/>
    <action name="reg1Form" path="/reg1" type="prj8_1.action.Reg1Action" scope="session"/>
这里我们定义了2个jsp分别是p1.jsp和p2.jsp用来实现跨页面的参数传递。
p1.jsp
  1. <html:form action="/toP2">    
  2.             ppassword : <html:password property="password"/><br/>  
  3.             account : <html:text property="account"/><br/>  
  4.             <html:hidden property="page" value="1"/>  
  5.             <html:submit value="next"/><html:cancel/>  
  6.         </html:form>  


这里对应的actionForm是reg1Form。p1的action处是/toP2,这时候传递的参数就被放置在了session中,得到了暂时的保存,因为scope="session"啊。forward="/p2.jsp"控制当点击了p1的submit跳转到哪里。
p2.jsp
  1. <html:form action="/reg1">  
  2.             phone: <html:password property="phone"/><br/>  
  3.             address : <html:text property="address"/><br/>  
  4.             <html:hidden property="page" value="2"/>  
  5.             <html:submit value="do"/><html:cancel/>  
  6.         </html:form>  

3,进入p2.jsp后,然后通过action="/reg1"把信息都提交到了Reg1Action中。
4,这里有一个问题,如果我在跨页面要做错误验证呢,比如不为空,长度限制呢。那怎么来确定p1,和p2中的参数呢。可以通过<html:hidden />隐藏表单来实现,在actionForm中判断是第一个页面的表单就ok了。当然以后还会有更好的方法。
5,重点就是在放置参数的范围上。session
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值