<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    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
    主站蜘蛛池模板: 亚洲一区二区三区首页| 国产亚洲精品不卡在线| 黄在线观看www免费看| 999在线视频精品免费播放观看| 亚洲国产成人一区二区精品区 | 一级**爱片免费视频| 免费的全黄一级录像带| 精品香蕉在线观看免费| 亚洲av午夜精品无码专区| 国产AV无码专区亚洲AV蜜芽 | 免费观看国产网址你懂的| 少妇亚洲免费精品| 亚洲va在线va天堂va不卡下载| 亚洲欧美日韩中文无线码| 国产免费AV片在线观看播放| 在线免费观看亚洲| 亚洲国产专区一区| 亚洲Av高清一区二区三区| 成年女人午夜毛片免费视频| 亚洲AV日韩AV高潮无码专区| 最近最好最新2019中文字幕免费| 国产免费小视频在线观看| 亚洲尹人九九大色香蕉网站| 24小时日本电影免费看| 99久久国产亚洲综合精品| 日韩精品免费在线视频| 黑人大战亚洲人精品一区 | 国产精品亚洲专一区二区三区| 91精品免费国产高清在线| 亚洲欧洲av综合色无码| 亚洲AV无码一区二三区| 美女羞羞视频免费网站| 妞干网免费视频观看| 亚洲欧洲日产专区| 91麻豆国产免费观看| 亚洲欧美中文日韩视频| 国产亚洲精久久久久久无码| 国产福利免费视频| 国产精品亚洲αv天堂无码| 全黄A免费一级毛片| 又粗又大又长又爽免费视频|