Primefaces(JSF2)实现简单显示上传文件列表功能
?
Primefaces默认的文件上传组件(在非Simple模式下)不具有显示已上传文件列表的功能, 用户可能刚上传了几个文件,但后来却不知道某些文件到底上传上去了没(因为用户忘记了刚才上传了哪些文件), 此时我们需要将用户上传的文件列表出来,方便用户查看.
?
>>多文件上传模式
页面代码:
<p:fileUpload id="fileUploadComponent" auto="true" multiple="true" fileUploadListener="#{copyOfMainVM.handleFileUpload}" mode="advanced" dragDropSupport="false" update="uploadFileInfo"/>
<p:dataList id="uploadFileInfo" var="fileItem" value="#{copyOfMainVM.files}" rowIndexVar="idx">
<span class="textOverflow220">
<p:outputLabel id="uploadFileInfo" value="#{fileItem.fileName}"></p:outputLabel>
</span>
<p:spacer width="5" />
<p:commandLink immediate="true" actionListener="#{copyOfMainVM.removeFileAction}" value="Remove" update="uploadFileInfo">
<f:param name="fileIndex" value="#{idx}" />
</p:commandLink>
</p:dataList>
?
VM代码:
private List<UploadedFile> files = new ArrayList<UploadedFile>();
public void handleFileUpload(FileUploadEvent event) {
UploadedFile file = event.getFile();
if (null != file) {
MessengeUtil.sendInfoMSG(file.getFileName() + " is uploaded.");
files.add(file);
} else {
MessengeUtil.sendErrorMSG("No file is uploaded !");
}
}
public void removeFileAction(ActionEvent event) {
FacesContext facesContext = FacesContext.getCurrentInstance();
ExternalContext externalContext = facesContext.getExternalContext();
HttpServletRequest request = (HttpServletRequest) externalContext.getRequest();
int fileIndex = Integer.valueOf(request.getParameter("fileIndex"));
if (fileIndex > -1) {
UploadedFile tempFile = files.get(fileIndex);
files.remove(fileIndex);
MessengeUtil.sendInfoMSG(tempFile.getFileName() + " is removed!");
} else {
MessengeUtil.sendErrorMSG("Invaild file index !");
}
}
?
?
>>单文件上传模式
页面代码:
<p:fileUpload id="fileUploadComponent" auto="true" fileUploadListener="#{mainVM.handleFileUpload}" mode="advanced" dragDropSupport="false" update="uploadFileInfo"/>
<span class="textOverflow220">
<p:outputLabel id="uploadFileInfo" value="#{mainVM.file.fileName}"></p:outputLabel>
</span>
<p:spacer width="5" />
<p:commandLink immediate="true" actionListener="#{mainVM.removeFileAction}" value="Remove" update="uploadFileInfo,fileUploadComponent"/>
?VM代码:
private UploadedFile file;
public void handleFileUpload(FileUploadEvent event) {
file = event.getFile();
if (null != file) {
MessengeUtil.sendInfoMSG(file.getFileName() + " is uploaded.");
} else {
MessengeUtil.sendErrorMSG("No file is uploaded !");
}
}
public void removeFileAction(ActionEvent event) {
file = null;
}
?