免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1873 | 回复: 0
打印 上一主题 下一主题

处理ENCTYPE="multipart/form-data"类型表单提交方案 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-08-18 00:25 |只看该作者 |倒序浏览
首先,jspsmart.upload是一个非常好用的东东,处理文件上传下载非常方便,也很容易修改以满足个人的bt用法。
不过,当表单的ENCTYPE的属性设为"multipart/form-data"时,在提交後的页面get提交的参数,取得的全为空值,后来查看了jspsmart的一个例子,发现得调用su.getRequest().getParameter("")才能取得表单提交的参数,这里我就没有去研究为什么request.getParameter()就取不到表单的数据,也许又是那些可恨又可爱的协议了。反正jspsmart已经帮我们封装好了,想要取得到表单的数据还是可以D。
可是又有了一个问题,jsp的setProperty没法把表单的数据传递给bean了,这个问题虽然好解决,大不了就自己手动去set,但是作为一个懒人,我最讨厌写这些繁冗重复的代码了,所以就想可不可以自己去写一个函数把form的数据传给bean,于是就去查看了jspsmart的代码,整了一个多钟头,终于找到合适的方案。
由于SmartRequest中存放url参数的是一个hashtable,所以我就想到利用hashtable和reflect来解决问题。
首先,我们要可以把SmartRequest中的hashtable取出来,这必须去修改SmartRequest的源码(其实就加一个get函数而已,把私有的hashtable取出来):
/**
     * 小马增加于8-14
     * 主要应用在上传文件时form的传值
     * @return
     */
    public Hashtable getm_parameters(){
     return m_parameters;
    }
接下来在指定的一个基本bean中添加如下两个函数就ok了:
/**
  * 把一个hashtable中的key是staff的成员的value构成一个staff
  * 主要应用在上传文件时form的传值
  * @param hash
  * @return
  * @throws IllegalAccessException
  * @throws IllegalArgumentException
  * @throws NumberFormatException
  */
public void toStaff(Hashtable hash) throws NumberFormatException, IllegalArgumentException, IllegalAccessException{
  Field f[] = this.getClass().getDeclaredFields(); //取得成员属性
  String s = "";
  System.out.println(hash);
  for(int i = 0; i

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/8800/showart_362583.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP