enctype="multipart/Form-data"取不到值

来源:互联网 发布:笔记本怎么切换网络 编辑:程序博客网 时间:2024/06/05 05:13

今天发现在公司的SSH框架下,service成功执行完,马上调用另外一个action,在form里的值没传过去,很是怪异。理论上,这两个action用的都是同一个form、dto,值传递是没有问题的。经过他人的寻找,原来在jsp上的form中有加入enctype="multipart/Form-data"而导致取不到值。

 

这里稍微深入下,编码方式ENCTYPE是为了设置页面提交的编码方式,主要包括3中种。

 

编码方式 具体含义

text/plain 以纯文本的方式进行发送

application/x-www-Form-urlencode 采用默认的编码形式

multipart/Form-data 使用MINE编码方式进行发送

 

如果在表单内有文件需上传,必须使用multipart/Form-data的方式。但用request.getParameter("XXX")取出来的值会是null。enctype="multipart/form-data"是上传二进制数据;form里面的input的值以2进制的方式传过去。
form里面的input的值以2进制的方式传过去,所以request就得不到值了。 也就是说加了这段代码,用request就会传递不成功。
取表单值加入数据库时,可用到下面的方法:
SmartUpload su = new SmartUpload();//新建一个SmartUpload对象
su.getRequest().getParameterValues();取数组值
su.getRequest().getParameter( );取单个参数单个值

 

也可用下面的方法:

o'reilly组件  MultipartRequest 对象. getParameter("");来获得。

其它方法可参考如下文章:http://enjoy123.5d6d.com/archiver/tid-403.html