jsp处理表单及JS和JAVA变量互传
2011-11-22 14:59
288 查看
如果你要用来上传文件的话,注意在一个表单中如果有enctype="multipart/form-data"属性的话,是不能接收除 type=file外的其他表单元素类型的。
1:超连接跳转
我们在超连接的时候,常常连接到一个jsp或者Action,比如:
XXX
这样做会有一个问题:在test.jsp中,除你传递的param1和param2参数外,你用request.getParamter()取任何原来页面的表单元素都会为空,这是因为这种方式会产生新的request生命周期,在这个request中只会包含超连接后跟随的?param1这种参数, 因此我的建议是如果不是很简单的页面跳转(比如回登陆页面之类的),尽量不要用这种超连接方式。
2:既传参又提交表单
如果确实既要像上述第一种方式传参数,又要提交表单的话,可以采取如下方式:
在脚本中如下处理:
提交到Action和jsp是一样的原理,但要记住中method=post不能少,否则它只提交表单而不传param参数了(正好和第一种相反:) )
3:Action中request不会丢掉
不知大家有没有注意到这个好处,Struts架构中是由一个ActionServlet来作为MVC的控制器角色,jsp页面提交后request是传到 ActionServelt中的, 而ActionServlet将根据struts-config.xml中的配置调用相应的Action的方法,并将从jsp中获得的request传给 Action类,这样request的生命周期是连续的,即你在jsp中提交了表单,在Action中执行了方法,再回到jsp页面,用 request.getParamter()取jsp页面的表单元素值会发现它还在,这对于页面下拉列表等选择项防止复位是一个很好实现方法。
4:传参时参数有空格的情况
如果你提交form时带参数,比如form1.action="/jsp/Action.do?param1="+value1,注意如果value1中带有空格的话,你在
Action中request.getParameter("param1");
取得的只是空格前的值,因此如果有这种带空格的参数在传递时,个人建议是将其转化为特定的字符串,value1=value1.replaceAll(" ","%NULL%");
然后在Action中将其转回来:request.getParamter("param1").replaceAll("%NULL%","");
5:form-data属性
如果你要用来上传文件的话,注意在一个表单中如果有enctype="multipart/form-data"属性的话,是不能接收除 type=file外的其他表单元素类型的。
即如果你把textfield放在同一表单中,而该表单有enctype="multipart/form-data"的话,request.getParamter取 text的值会为空, 这个问题的最简单的解决方法是将单独放一个表单,上传文件时只提交该表单即可。
1:超连接跳转
我们在超连接的时候,常常连接到一个jsp或者Action,比如:
XXX
这样做会有一个问题:在test.jsp中,除你传递的param1和param2参数外,你用request.getParamter()取任何原来页面的表单元素都会为空,这是因为这种方式会产生新的request生命周期,在这个request中只会包含超连接后跟随的?param1这种参数, 因此我的建议是如果不是很简单的页面跳转(比如回登陆页面之类的),尽量不要用这种超连接方式。
2:既传参又提交表单
如果确实既要像上述第一种方式传参数,又要提交表单的话,可以采取如下方式:
在脚本中如下处理:
以下是代码片段: functioncommonSubmit(url) { form1.action="/jsp/managerAction.do?"+url; form1.submit(); } |
3:Action中request不会丢掉
不知大家有没有注意到这个好处,Struts架构中是由一个ActionServlet来作为MVC的控制器角色,jsp页面提交后request是传到 ActionServelt中的, 而ActionServlet将根据struts-config.xml中的配置调用相应的Action的方法,并将从jsp中获得的request传给 Action类,这样request的生命周期是连续的,即你在jsp中提交了表单,在Action中执行了方法,再回到jsp页面,用 request.getParamter()取jsp页面的表单元素值会发现它还在,这对于页面下拉列表等选择项防止复位是一个很好实现方法。
4:传参时参数有空格的情况
如果你提交form时带参数,比如form1.action="/jsp/Action.do?param1="+value1,注意如果value1中带有空格的话,你在
Action中request.getParameter("param1");
取得的只是空格前的值,因此如果有这种带空格的参数在传递时,个人建议是将其转化为特定的字符串,value1=value1.replaceAll(" ","%NULL%");
然后在Action中将其转回来:request.getParamter("param1").replaceAll("%NULL%","");
5:form-data属性
如果你要用来上传文件的话,注意在一个表单中如果有enctype="multipart/form-data"属性的话,是不能接收除 type=file外的其他表单元素类型的。
即如果你把textfield放在同一表单中,而该表单有enctype="multipart/form-data"的话,request.getParamter取 text的值会为空, 这个问题的最简单的解决方法是将单独放一个表单,上传文件时只提交该表单即可。
相关文章推荐
- jsp处理表单及JS和JAVA变量互传
- jsp处理表单及JS和JAVA变量互传
- jsp 中 js变量引用java变量时 特殊字符的处理
- Session防止表单重复提交,js和java的处理方式
- js中变量和jsp中java代码中变量互相访问解决方案
- 简单的Java Web项目(1)——JS获取表单值,处理后写入表单文本框
- 在jsp中经常会遇到把js变量赋给java变量,或者将java变量赋给js变量的情况
- JS中变量和jsp中java代码中变量互相访问解决方案
- 工作笔记:ajax json 同一jsp页面中,把java变量赋给js变量,如果java变量字符串符合json格式,则赋给js变量时,js变量会自动的变为json对象
- jsp中把js变量赋给java变量,或者将java变量赋给js变量怎么做?
- js中变量和jsp中java代码中变量互相访问解决方案
- js中变量和jsp中java代码中变量互相访问解决方案
- jsp提交表单与后台java处理表单
- Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之13.Form表单处理(1)
- JSP获得JS中变量的值(隐藏表单)
- [JAVAWEB]2.在JSP中处理表单提交的数据
- 在jsp页面嵌入java代码和js并且在js中直接使用java代码中的变量
- js中变量和jsp中java代码中变量互相访问解决方案
- js如何获取jsp页面中嵌入的java代码中的变量?
- 简单的表单验证--js,jsp,jquery,java,mysql(前台和后台验证)(