好吧,我有一個JSP,一個Servlet和一個Action類。 JSP有一個「下載」按鈕,點擊後可以調用2個函數 - 「build()」和「download()」。 「build()」函數執行一個動作。該操作在服務器上創建並構建文件。 「download()」用於使用servlet從服務器獲取文件,以便用戶可以下載它。JSP - 如何在Action完成執行後才調用Servlet?
Action.java
-----------
buildFile() {
//build file/writes in the file
}
Servlet.java
-----------
doget(){
//gets the file from the server
}
JSP
---
<script type="text/javascript">
function build() {
//calls buildFile();
//form.submit();
}
function download() {
window.open('/Servlet');
}
</script>
<input type="button" class="button" value="Download" onclick="build();download();"/>
現在的問題是,無論何時點擊「下載」,下載()在build()後立即被調用。因此,如果文件的數據較少,則構建過程完成,用戶可以下載該文件。但是,如果正在寫入文件的數據很大,則在「build()」後用戶仍然會調用download(),並且用戶僅在其下載的文件中獲取部分數據(導致文件仍在場景後面)。我想做一些讓download()等待Action(buildFile())完成執行的東西。另外,如果沒有form.submit(),則由於某種原因不會調用該操作。這就是爲什麼我不能使用「document.ready」或「window.onLoad」。所以請提出其他建議。我也試過這個:
function build() {
//calls buildFile();
//form.submit();
download();
}
function download() {
window.open('/Servlet');
}
<input type="button" class="button" value="Download" onclick="build();"/>
但它不起作用。
這與僅僅在一個servlet中執行所有操作並沒有什麼不同,這更直接。 – developerwjk