Struts中不限個數上傳文件的實現方案
??????在使用Struts的系統中使用?org.apache.struts.upload.FormFile 可以很方便的實現文件的上傳,無論是單個或者多個文件。不過又應該如何來實現不限個數的文件上傳呢?
??????首先,在Jsp頁面中,需要有像163那樣動態添加附件的功能,這個可以使用JS來實現。代碼如下:
???????
????????????????????????????????????????????
<
tr?
bgcolor
="#FFFFFF"
>
????????????????????????????????????????????????
<
td?
nowrap?id
="fileTD"
?align
="center"
?colSpan
="2"
>
????????????????????????????????????????????????????
<
input?
name
="uploadFile(0)"
?type
="file"
?size
="40"
>
????????????????????????????????????????????????????
<
input?
type
="button"
?onclick
="addFile()"
?value
="添加"
/>
????????????????????????????????????????????????
</
td
>
????????????????????????????????????????????
</
tr
>
????
var
?fileIndex?
=
?
0
;
????
function
?addFile()?
????
{
????????fileIndex
++
;
????????
var
?spanId?
=
?
"
fileTD
"
;
????????
var
?fileId?
=
?
"
uploadFile(
"
?
+
fileIndex
+
?
"
)
"
;
????????addInputFile(spanId,?fileId);
????}
????
function
?addInputFile(spanId,?fileId)?
????
{
????????
var
?span?
=
?document.getElementById(spanId);
????????
if
?(span?
!=
?
null
)?
????????
{
????????????
var
?divObj?
=
?document.createElement(
"
div
"
);
????????????
var
?fileObj,?delObj;
????????????divObj.id?
=
?fileId;
???????????????fileObj?
=
?document.createElement(
"
<input?type=file>
"
);
???????????????delObj?
=
?document.createElement(
"
<input?type=button?onclick=delInputFile('
"
?
+
?spanId?
+
?
"
','
"
?
+
?fileId?
+
?
"
')>
"
);
????????????fileObj.name?
=
?fileId;
????????????fileObj.size?
=
?
"
40
"
;
????????????fileObj.className?
=
?
"
input
"
;
????????????delObj.value?
=
'刪除';
????????????divObj.appendChild(fileObj);
????????????divObj.appendChild(document.createTextNode(
"
?
"
));
????????????divObj.appendChild(delObj);
????????????span.appendChild(divObj);
????????}
????}
????
function
?delInputFile(spanId,?fileId)?
????
{
????????
var
?span?
=
?document.getElementById(spanId);
????????
var
?divObj?
=
?document.getElementById(fileId);
????????
if
?(span?
!=
?
null
?
&&
?divObj?
!=
?
null
)?
????????
{
????????????span.removeChild(divObj);
????????}
????}
上面代碼中的Html和JS代碼就可以實現動態添加行的效果。(上述JS代碼參考了一位網友的實現,這里對他表示感謝。)
Html代碼中的?
<
input?
name
="uploadFile(0)"
?type
="file"
?size
="40"
>
容易讓人迷惑,我也是第一次寫
?
name
="uploadFile(0)"
這樣的Html代碼
。
這里的
uploadFile(0)
表示數組中index=0的元素,那么在Struts的FormBean中又應該如何讓BeanUtils在做反射的時候可以正確的賦值呢?
來看一下FormBean中的代碼:
import
?java.util.ArrayList;
import
?org.apache.struts.action.ActionForm;
import
?org.apache.struts.upload.FormFile;
public
?
class
?BulletinInfoForm?
extends
?ActionForm?
{
????
private
?
static
?
final
?
long
?serialVersionUID?
=
?
-
7869342360944575352L
;
????
private
?Long?id;
????
????
private
?String?newsTitle;
????
????
private
?String?newsType;
????
????
private
?String?newsContent;
????
private
?ArrayList
<
FormFile
>
?uploadFiles?
=
?
new
?ArrayList
<
FormFile
>
();
????
public
?
void
?setUploadFile(String?index,?FormFile?formFile)?
{
????????
this
.uploadFiles.add(formFile);
????}
????
public
?ArrayList
<
FormFile
>
?getUploadFiles()?
{
????????
return
?
this
.uploadFiles;
????}
????
public
?Long?getId()?
{
????????
return
?id;
????}
????
public
?
void
?setId(Long?id)?
{
????????
this
.id?
=
?id;
????}
????
public
?String?getNewsContent()?
{
????????
return
?newsContent;
????}
????
public
?
void
?setNewsContent(String?newsContent)?
{
????????
this
.newsContent?
=
?newsContent;
????}
????
public
?String?getNewsTitle()?
{
????????
return
?newsTitle;
????}
????
public
?
void
?setNewsTitle(String?newsTitle)?
{
????????
this
.newsTitle?
=
?newsTitle;
????}
????
public
?String?getNewsType()?
{
????????
return
?newsType;
????}
????
public
?
void
?setNewsType(String?newsType)?
{
????????
this
.newsType?
=
?newsType;
????}
????
}
留意以上代碼中的
public
?
void
?setUploadFile(String?index,?FormFile?formFile)?
{
????????
this
.uploadFiles.add(formFile);
????}
這里提供的setUploadFIle(String index, FormFile formFile)其實就是給BeanUtils一個正確的借口,讓它可以對uploadFile(0)這樣的元素進行正確的反射。當然,這里不用考慮index,直接將formFile添加進list中。
??????因此,在Struts中不限個數上傳文件的實現中,主要是頁面中動態添加上傳文件行和在FormBean中正確賦值,Action中要做的相信就很簡單了,只要把FormBean中的List取出來逐個進行操作。
??????
posted on 2006-09-01 11:38
旱頭憨腦
閱讀(425)
評論(0)
編輯
收藏
所屬分類:
j2ee
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關文章:
Javascript cookie操作攻略
Spring2.0 AOP 心得(二)
Spring2.0 AOP使用心得(一)
Tomcat中,UTF-8 URL提交參數中文解決終極方案
Struts中不限個數上傳文件的實現方案
Spring2.0 新特性之Bean新增范圍session, request, global session
旱頭憨腦
lanluquan
導航
BlogJava
首頁
新隨筆
聯系
聚合
管理
統計
隨筆 - 1
文章 - 10
評論 - 1
引用 - 0
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
留言簿
(1)
給我留言
查看公開留言
查看私人留言
隨筆檔案
■
2006年10月 (1)
文章分類
■
ajax(1)
(rss)
■
j2ee(7)
(rss)
■
java
(rss)
■
ruby(1)
(rss)
■
非技術(1)
(rss)
文章檔案
■
2008年6月 (1)
■
2007年9月 (1)
■
2007年7月 (1)
■
2006年10月 (4)
■
2006年9月 (1)
■
2006年8月 (2)
搜索
最新評論
1.?re: Hibernate3 父子映射報錯:illegal access to loading collection
評論內容較長,點擊標題查看
--d
Powered by:
BlogJava
Copyright © 旱頭憨腦
主站蜘蛛池模板:
亚洲一区二区三区首页
|
国产亚洲精品不卡在线
|
黄在线观看www免费看
|
999在线视频精品免费播放观看
|
亚洲国产成人一区二区精品区
|
一级**爱片免费视频
|
免费的全黄一级录像带
|
精品香蕉在线观看免费
|
亚洲av午夜精品无码专区
|
国产AV无码专区亚洲AV蜜芽
|
免费观看国产网址你懂的
|
少妇亚洲免费精品
|
亚洲va在线va天堂va不卡下载
|
亚洲欧美日韩中文无线码
|
国产免费AV片在线观看播放
|
在线免费观看亚洲
|
亚洲国产专区一区
|
亚洲Av高清一区二区三区
|
成年女人午夜毛片免费视频
|
亚洲AV日韩AV高潮无码专区
|
最近最好最新2019中文字幕免费
|
国产免费小视频在线观看
|
亚洲尹人九九大色香蕉网站
|
24小时日本电影免费看
|
99久久国产亚洲综合精品
|
日韩精品免费在线视频
|
黑人大战亚洲人精品一区
|
国产精品亚洲专一区二区三区
|
91精品免费国产高清在线
|
亚洲欧洲av综合色无码
|
亚洲AV无码一区二三区
|
美女羞羞视频免费网站
|
妞干网免费视频观看
|
亚洲欧洲日产专区
|
91麻豆国产免费观看
|
亚洲欧美中文日韩视频
|
国产亚洲精久久久久久无码
|
国产福利免费视频
|
国产精品亚洲αv天堂无码
|
全黄A免费一级毛片
|
又粗又大又长又爽免费视频
|