关于struts如何实现跨页面的表单参数的传递呢?
1,我们需要和配置文件结合起来看下:
先来简单介绍下各个标签的作用吧!
a,<form-beans></form-beans>中套的都是beans是所有bean的集合,也就是所有ActionForm的集合,<form-beanname="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,<actionname="reg1Form"forward="/p2.jsp"path="/toP2"scope="session"/>
<actionname="reg1Form"path="/reg1"type="prj8_1.action.Reg1Action"scope="session"/>
这里我们定义了2个jsp分别是p1.jsp和p2.jsp用来实现跨页面的参数传递。
p1.jsp
这里对应的actionForm是reg1Form。p1的action处是/toP2,这时候传递的参数就被放置在了session中,得到了暂时的保存,因为scope="session"啊。forward="/p2.jsp"控制当点击了p1的submit跳转到哪里。
p2.jsp
3,进入p2.jsp后,然后通过action="/reg1"把信息都提交到了Reg1Action中。
4,这里有一个问题,如果我在跨页面要做错误验证呢,比如不为空,长度限制呢。那怎么来确定p1,和p2中的参数呢。可以通过<html:hidden/>隐藏表单来实现,在actionForm中判断是第一个页面的表单就ok了。当然以后还会有更好的方法。
5,重点就是在放置参数的范围上。session
1,我们需要和配置文件结合起来看下:
- <struts-config>
- <form-beans>
- <form-beanname="loginForm"type="prj8_1.form.LoginForm"/>
- <form-beanname="reg1Form"type="prj8_1.form.Reg1Form"/>
- </form-beans>
- <global-exceptions/>
- <global-forwards/>
- <action-mappings>
- <action
- //attribute="loginForm"
- input="/login.jsp"
- name="loginForm"
- path="/login"
- scope="request"
- type="prj8_1.action.LoginAction"/>
- <actionname="reg1Form"forward="/p2.jsp"path="/toP2"scope="session"/>
- <actionname="reg1Form"path="/reg1"type="prj8_1.action.Reg1Action"scope="session"/>
- </action-mappings>
- <message-resourcesparameter="prj8_1.ApplicationResources"/>
- </struts-config>
<struts-config> <form-beans > <form-bean name="loginForm" type="prj8_1.form.LoginForm" /> <form-bean name="reg1Form" type="prj8_1.form.Reg1Form" /> </form-beans> <global-exceptions /> <global-forwards /> <action-mappings > <action //attribute="loginForm" input="/login.jsp" name="loginForm" path="/login" scope="request" type="prj8_1.action.LoginAction" /> <action name="reg1Form" forward="/p2.jsp" path="/toP2" scope="session"/> <action name="reg1Form" path="/reg1" type="prj8_1.action.Reg1Action" scope="session"/> </action-mappings> <message-resources parameter="prj8_1.ApplicationResources" /> </struts-config>
先来简单介绍下各个标签的作用吧!
a,<form-beans></form-beans>中套的都是beans是所有bean的集合,也就是所有ActionForm的集合,<form-beanname="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,<actionname="reg1Form"forward="/p2.jsp"path="/toP2"scope="session"/>
<actionname="reg1Form"path="/reg1"type="prj8_1.action.Reg1Action"scope="session"/>
这里我们定义了2个jsp分别是p1.jsp和p2.jsp用来实现跨页面的参数传递。
p1.jsp
- <html:formaction="/toP2">
- ppassword:<html:passwordproperty="password"/><br/>
- account:<html:textproperty="account"/><br/>
- <html:hiddenproperty="page"value="1"/>
- <html:submitvalue="next"/><html:cancel/>
- </html:form>
<html:form action="/toP2"> ppassword : <html:password property="password"/><br/> account : <html:text property="account"/><br/> <html:hidden property="page" value="1"/> <html:submit value="next"/><html:cancel/> </html:form>
这里对应的actionForm是reg1Form。p1的action处是/toP2,这时候传递的参数就被放置在了session中,得到了暂时的保存,因为scope="session"啊。forward="/p2.jsp"控制当点击了p1的submit跳转到哪里。
p2.jsp
- <html:formaction="/reg1">
- phone:<html:passwordproperty="phone"/><br/>
- address:<html:textproperty="address"/><br/>
- <html:hiddenproperty="page"value="2"/>
- <html:submitvalue="do"/><html:cancel/>
- </html:form>
<html:form action="/reg1"> phone: <html:password property="phone"/><br/> address : <html:text property="address"/><br/> <html:hidden property="page" value="2"/> <html:submit value="do"/><html:cancel/> </html:form>
3,进入p2.jsp后,然后通过action="/reg1"把信息都提交到了Reg1Action中。
4,这里有一个问题,如果我在跨页面要做错误验证呢,比如不为空,长度限制呢。那怎么来确定p1,和p2中的参数呢。可以通过<html:hidden/>隐藏表单来实现,在actionForm中判断是第一个页面的表单就ok了。当然以后还会有更好的方法。
5,重点就是在放置参数的范围上。session