我想上傳很多文件,並且我選擇了rich:fileUpload控件。rich:file上傳更多文件信息
我的問題是我需要爲每個文件添加更多信息,例如我想要在該文件的應用程序中出現的標題。我該怎麼做,併發送到fileUploadListener方法,以使用ID?
我想上傳很多文件,並且我選擇了rich:fileUpload控件。rich:file上傳更多文件信息
我的問題是我需要爲每個文件添加更多信息,例如我想要在該文件的應用程序中出現的標題。我該怎麼做,併發送到fileUploadListener方法,以使用ID?
根據你的問題,RichFaces FileUpload demo有你需要的所有信息來同時處理一個或多個文件的文件上傳。
如果你想添加更多的數據(如h:inputText
值等),那麼你應該通過他們使用valueChangeListener
代替value
標籤屬性,因爲fileUploadListener
是一個Ajax調用中發生的一個事件,所以你UIComponent
贏球」 t調用setter的屬性。
一些代碼來解釋行爲:
<h:panelGrid cols="2">
<h:outputText value="File Title:">
<h:inputText value="#{fileBean.fileTitle}" immediate="false"
valueChangeListener="#{fileBean.valueChangeFileTitle}" />
<h:outputText value="File:">
<rich:fileUpload
fileUploadListener="#{bean.fileUpload}">
</rich:fileUpload>
</h:panelGrid>
的Bean來處理請求
public class Bean {
private String fileTitle;
public Bean() {
}
//getters and setters...
public String getFileTitle() {
return this.fileTitle;
}
public void setFileTitle(String fileTitle) {
System.out.println("Calling the setter");
this.fileTitle = fileTitle;
}
public void valueChangeFileTitle(ValueChangeEvent e) {
System.out.println("Calling the ValueChangeListener");
fileTitle = (String)e.getNewValue();
}
//this will be invoked by an ajax call
//the setter of the view won't be invoked for fileTitle
//instead, we should take its value using valueChangeListener
public void fileUpload(UploadEvent ue) {
MyFileManager mfm = MyFileManager.getFileManager();
MyFile myFile = new MyFile();
myFile.setTitle(this.fileTitle);
myFile.setName(ue.getUploadItem().getFileName());
myFile.setData(ue.getUploadItem().getData());
mfm.createFile(myFile);
}
}
此外,避免在代碼中使用System.out.println
電話,我做的,所以你可以瞭解將調用什麼方法,而是使用類似Log4j的Logger。
您好!感謝您的回覆。我不確定我是否完全符合我的意思。我希望每個文件都有一個文件標題的輸入文本,當我按下上傳按鈕時將此信息發送給處理程序。 – QuickQuestion
你不能。您必須爲每個文件提供標題,您有兩種方法來執行此操作:1)爲用戶添加的每個文件添加一個文件輸入文本,2)一次爲一個文件詢問標題。我的例子是第二種方式。 –
你正在使用什麼RF版本? –
RF版3.3.3 – QuickQuestion