jsf和myface上传文件
气死我了
<%@ taglib uri="http://myfaces.apache.org/tomahawk" prefix="x"%>
<h:form id="createForm" enctype="multipart/form-data">
<td class="tdbg4" width="100">
上传附件:
</td>
<td class="tdbg5" width="400" colspan="3">
<a4j:region>
<input type=hidden" value="0" name="uploadedFileNum"
id="uploadedFileNum" />
<h:panelGroup id="uploadedFilePanel">
<x:inputFileUpload value="#{projectBean.uploadedFile[0]}"
id="uploadedFile0" storage="file" />
<x:inputFileUpload value="#{projectBean.uploadedFile[1]}"
id="uploadedFile1" storage="file" rendered="false" />
<x:inputFileUpload value="#{projectBean.uploadedFile[2]}"
id="uploadedFile2" storage="file" rendered="false" />
<x:inputFileUpload value="#{projectBean.uploadedFile[3]}"
id="uploadedFile3" storage="file" rendered="false" />
<x:inputFileUpload value="#{projectBean.uploadedFile[4]}"
id="uploadedFile4" storage="file" rendered="false" />
<x:inputFileUpload value="#{projectBean.uploadedFile[5]}"
id="uploadedFile5" storage="file" rendered="false" />
<x:inputFileUpload value="#{projectBean.uploadedFile[6]}"
id="uploadedFile6" storage="file" rendered="false" />
<x:inputFileUpload value="#{projectBean.uploadedFile[7]}"
id="uploadedFile7" storage="file" rendered="false" />
<x:inputFileUpload value="#{projectBean.uploadedFile[8]}"
id="uploadedFile8" storage="file" rendered="false" />
<x:inputFileUpload value="#{projectBean.uploadedFile[9]}"
id="uploadedFile9" storage="file" rendered="false" />
</h:panelGroup>
<a4j:commandLink value="添加上传文件"
action="#{projectBean.addUploadedFilePanel}"
οnclick="document.getElementById('uploadedFileNum').value=parseInt(document.getElementById('uploadedFileNum').value)+1;"
reRender="uploadedFilePanel">
</a4j:commandLink>
</a4j:region>
ProjectBean中
/**
* AjAX处理
*/
public void addUploadedFilePanel() {
UIComponent panel = FacesContext.getCurrentInstance().getViewRoot()
.findComponent("createForm:uploadedFilePanel");
String uploadedFileNum = (String) FacesUtils
.getRequestParameter("uploadedFileNum");
panel.findComponent("uploadedFile" + uploadedFileNum).setRendered(true);
}
private UploadedFile[] uploadedFile;
/**
* 上传的文件
*/
public UploadedFile[] getUploadedFile() {
String uploadedFileNum = (String) FacesUtils
.getRequestParameter("uploadedFileNum");
if (uploadedFile == null) {
if (uploadedFileNum != null && !uploadedFileNum.equals("")) {
uploadedFile = new UploadedFile[Integer.parseInt(uploadedFileNum) + 1];
} else {
uploadedFile = new UploadedFile[1];
}
}
return uploadedFile;
}
//上传文件
public void upLoad() throws IOException {
if (uploadedFile.length != 0) {
String uploadDir = FacesUtils.getServletContext().getRealPath(
"//upload//applyProject//");
uploadDir += "//" + FacesUtils.getCurrentUserName() + "//";
FileUntils fileUntils = new FileUntils();
fileUntils.createFolder(uploadDir);
Attachment[] attachment = new Attachment[uploadedFile.length];
for (int i = 0; i < uploadedFile.length; i++) {
if (uploadedFile[i]!= null) {
File tempUploadFile = new File(uploadedFile[i].getName());
String fileName = tempUploadFile.getName();
int length = (int) tempUploadFile.length();
String completePath = uploadDir + "//"
+ UniqueStringGenerator.getUniqueString();
fileUntils.createFolder(completePath);
String floder = completePath;
completePath = completePath + "//" + fileName;
fileUntils.createFile(uploadedFile[i].getInputStream(),
completePath);
attachment[i] = new Attachment();
attachment[i].setFileName(fileName);
attachment[i].setFileSize(length);
attachment[i].setPath(completePath);
attachment[i].setFloder(floder);
attachment[i].setProject(project);
project.getAttachments().add(attachment[i]);
}
}
}
}
public void setUploadedFile(UploadedFile[] uploadedFile) {
this.uploadedFile = uploadedFile;
}
不有确定按钮的add {upload()...}
Project与attach一对多的关系。