我想通過使用多個af:inputFile組件創建多個文件上傳。這裏是我的XHTML:ADF Faces多文件上傳
<?xml version='1.0' encoding='UTF-8'?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:af="http://xmlns.oracle.com/adf/faces/rich">
<jsp:directive.page contentType="text/html;charset=UTF-8"/>
<f:view>
<af:document id="d1" title="Home">
<af:form id="f1" usesUpload="true">
<af:commandButton text="Add" immediate="true"
actionListener="#{viewScope.massUpload.add}"
id="cb2"/>
<af:panelGroupLayout layout="vertical" id="pgl1" partialTriggers="cb1">
<af:iterator value="#{viewScope.massUpload.fileComponents}" var="fileComponent"
id="i1" varStatus="status">
<af:inputFile binding="#{fileComponent}" id="if1"
value="#{viewScope.massUpload.files[status.index]}"/>
</af:iterator>
<af:commandButton text="Upload"
actionListener="#{viewScope.massUpload.upload}"
id="cb1"/>
</af:panelGroupLayout>
</af:form>
</af:document>
</f:view>
</jsp:root>
,這是管理的bean:
package com.edfx.massupload.bean;
import java.util.ArrayList;
import java.util.List;
import javax.faces.event.ActionEvent;
import oracle.adf.view.rich.component.rich.input.RichInputFile;
import oracle.stellent.ridc.IdcClientException;
import org.apache.myfaces.trinidad.model.UploadedFile;
public class MassUploadBean {
private List<RichInputFile> fileComponents = new ArrayList<RichInputFile>();
private List<UploadedFile> files = new ArrayList<UploadedFile>();
public MassUploadBean() {
super();
}
public void add(ActionEvent event) {
fileComponents.add(new RichInputFile());
files.add(null);
}
public void upload(ActionEvent event) throws IdcClientException {
for(UploadedFile file : files) {
System.out.println(file.getFilename());
}
}
public void setFiles(List<UploadedFile> files) {
this.files = files;
}
public List<UploadedFile> getFiles() {
return files;
}
public void setFileComponents(List<RichInputFile> fileComponents) {
this.fileComponents = fileComponents;
}
public List<RichInputFile> getFileComponents() {
return fileComponents;
}
}
的問題,我面對的是:
- 我已經點擊添加按鈕;一個新的文件上傳組件添加到頁面;我瀏覽一個文件;再次點擊添加按鈕;添加另一個文件上傳組件,並提交第一個文件上傳(但它有一個邊框,或類似的東西);我從第二個文件上傳瀏覽文件;再次點擊添加按鈕;現在第一個文件上傳被清除(重置)並且第二個文件上傳被提交;
- 每當我點擊添加按鈕,文件就會上傳。爲什麼?如何抵制它?我曾嘗試設置atoSubmit =「false」,但沒有運氣。還試圖把迭代器,文件上傳器和上傳按鈕放在af中:subForm
- 我的要求是上傳文件時單擊上傳按鈕,而不是之前。
我做錯了什麼?任何指針都會非常有幫助。
您是否看到:http://docs.oracle.com/html/E18745_01/devguide/fileUpload.html? –
@DaveJarvis我看過文檔。爲什麼有差異?你指着'valueChangeListener'嗎?我無法使用'autoSubmit'屬性。 –