0
当用户上载带有Primefaces fileUpload元素的文件时,仅在文件上传后调用服务器方法。然后,当提交表单并且文件未完全传输到服务器时,我遇到了问题。我不知道在提交方法中需要等多久。确保在文件上传侦听器完成后调用Bean操作方法
要在提交方法期间等待,我创建了一个线程,只要上传需要,就会在用户选择文件时不会触发方法“handleFileUpload(FileUploadEvent event)”时指向该线程。
public void handleFileUpload(FileUploadEvent event) {
System.out.println("start fileupload");
FileUploadWaiter fileUploadWaiter = new FileUploadWaiter();
fileUploadThread = new Thread(fileUploadWaiter);
fileUploadThread.start();
System.out.println("fileupload triggered");
fileType = event.getFile().getContentType();
file = convertUploadedFileToByte(event.getFile());
fileUploadWaiter.stop();
try {
fileUploadThread.join();
} catch (InterruptedException e) {
//
}
System.out.println("upload fertig");// TODO
}
在页面:
<h:form enctype="multipart/form-data" id="form">
...
<p:fileUpload fileUploadListener="#{eintrag.handleFileUpload}"
mode="advanced" update="msgFileUpload" auto="true"
sizeLimit="#{config.fileUploadMaxSize}"
allowTypes="/(\.|\/)(jpeg|jpg|png)$/" label="Auswählen"
disable="false" id="fileUpload" />
...
</h:form>
验证码:
public void handleFileUpload(FileUploadEvent event) {
System.out.println("start fileupload");
FileUploadWaiter fileUploadWaiter = new FileUploadWaiter();
fileUploadThread = new Thread(fileUploadWaiter);
fileUploadThread.start();
System.out.println("fileupload triggered");
fileType = event.getFile().getContentType();
file = convertUploadedFileToByte(event.getFile());
fileUploadWaiter.stop();
try {
fileUploadThread.join();
} catch (InterruptedException e) {
//
}
System.out.println("fileupload finished");// TODO
}
我发现,在Primefaces没有提示手册
为什么不阻止,而该文件的上传完成页/禁用成分的休息吗? – kolossus
无论您尝试什么,永远不会*,永远*,**永远不会**在Java EE应用程序中手动创建一个'Thread'。 – BalusC