- 论坛徽章:
- 0
|
首先,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 |
|