我的頁面上有一個表單可以生成一個大的PDF文件(可能需要20秒)。 有沒有辦法在下載文件創建時顯示跳動,並在下載提示出現時將其隱藏起來?在等待下載成爲掛毯時顯示跳動圖像
我做了一些檢查,最初認爲我可以使用漸進式顯示,但認爲這不是它的目的。
我想我可以附加一個JS函數,當單擊「下載」按鈕時會觸發顯示我的跳動,但我不確定如何在下載窗口出現時隱藏它。
有沒有辦法在Tapestry中做到這一點?
我的頁面上有一個表單可以生成一個大的PDF文件(可能需要20秒)。 有沒有辦法在下載文件創建時顯示跳動,並在下載提示出現時將其隱藏起來?在等待下載成爲掛毯時顯示跳動圖像
我做了一些檢查,最初認爲我可以使用漸進式顯示,但認爲這不是它的目的。
我想我可以附加一個JS函數,當單擊「下載」按鈕時會觸發顯示我的跳動,但我不確定如何在下載窗口出現時隱藏它。
有沒有辦法在Tapestry中做到這一點?
可能更好的解決方案是不提交表格。你可以使用javascript構建一個GET url並使用iframe。
如:
<form>
<input id="someText" />
<button onclick="downloadPdf()">Click Me</button>
</form>
<script>
function downloadPdf() {
var url = "/path/to/pdf?someText=" + encodeURIComponent($("#someText").val());
startThrobber();
$('<iframe src="' + url + '" onLoad="stopThrobbber()">').appendTo('body');
}
</script>
HTTP有一個限制,你不能返回包含PDF和一些json的單個響應。
你可以做的是:
document.location.href = /path/to/pdf
)有關輪詢異步任務的示例,您可以看到progresslink。您需要將PDF存儲在異步任務(即會話,數據庫或文件系統)中的某個位置。
這看起來像它可以工作,但是,我並沒有實際的鏈接到PDF文件,因爲實際的文件不存在 – Lopina
只需創建一個Tapestry頁面(或組件事件)生成PDF並鏈接到它。您可以從頁面的onActivate()返回StreamResponse。 –
我不知道我在這裏正確地關注你。你是說我應該有一個像這樣的'myContextRoot/myPage/customevent:customparam'的組件事件,並有url指向? – Lopina