您现在的位置:计算机技术学习网 > 技术中心 > WEB编程 > JSP >

jsp处理表单及JS和JAVA变量互传

来源:未知 责任编辑:责任编辑 发表时间:2014-02-02 17:48 点击:

1:超连接跳转

 

      我们在超连接的时候,常常连接到一个jsp或者Action,比如:

 

XXX

 

      这样做会有一个问题:在test.jsp中,除你传递的param1和param2参数外,你用request.getParamter()取任何原来页面的表单元素都会为空,这是因为这种方式会产生新的request生命周期,在这个request中只会包含超连接后跟随的?param1这种参数, 因此我的建议是如果不是很简单的页面跳转(比如回登陆页面之类的),尽量不要用这种超连接方式。

 

 

 

2:既传参又提交表单

 

      如果确实既要像上述第一种方式传参数,又要提交表单的话,可以采取如下方式:

 

在脚本中如下处理:

 

functioncommonSubmit(url)

 

{

 

   form1.action="/jsp/managerAction.do?"+url;

 

    form1.submit();

 

}

 

提交到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的值会为空, 这个问题的最简单的解决方法是将单独放一个表单,上传文件时只提交该表单即可。

 

 

 

6:jsp中开模式对话框的方式

 

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • JSP与Servlet
  • 自己动手写MiniBBS系列(基本篇)之用户登录
  • JSP取当前日期
  • JDBC 入门(一)
  • 打开一个jsp页面默认查询所有数据,调用action
  • 使用JSP标签库验证用户的输入(2)完
  • WIN98/2000下的jsp服务器
  • 自定义JSP标签(tag)浅议
  • Struts学习傻瓜式入门篇
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1