2015-06-03 42 views
0

我對JSP世界有點新鮮。 我有這個網頁應用程序,調用下面的頁面,result.jsp頁面。 在提交表單後調用此頁面,動作類將生成createImage方法的圖像,由dispatchParam調用。等待從Action頁面調用方法

的實際代碼的部分是:

<div id="container_imagem_resultado"> 
    <p> 
     <img src="<%=pathBase%>access.do?dispatchParam=createImage&time="new Date().getTime();> 
</div> 

我需要這樣的頁面等待1秒調用img標記之前創建一些觸發器。

我該怎麼辦? 有沒有一種方法可以在該響應頁面中插入標籤後等待?在img標籤工作之前會添加<%Thread.sleep(1000);%>嗎?

+1

當然不是,'Thread.sleep'運行在* server *端。使用JS超時並在觸發時設置源屬性。 –

+0

謝謝,我明白這個主意。但是,我可以在頁面中做到這一點嗎?我在互聯網上看到過一些'''timeout'''的例子,但是不知道在我的情況下做什麼。 – igorfeiden

+0

通過編寫javascript -I不知道還有什麼要告訴你,你熟悉JavaScript嗎? –

回答

0

在頁面上執行Java(服務器端)延遲(即使在scriptlet中)只會導致將頁面發送到客戶端瀏覽器的延遲,這會導致頁面在收到頁面之前長時間停頓,或者(在某些情況下)具有奇數延遲的半載頁面,直到其餘的被加載。

要延遲在客戶端加載某些東西,最好的答案就是使用Javascript。鑑於你已經標記了這個問題,我將假設jQuery是一個可用的選項。

爲此,this answer給出了在這裏做什麼一個合理的例子:

// jQuery construct; calls this function after the page is ready. 
$(document).ready(function() { 
    // Create the function which loads the image. 
    function showImage() { 
     // Gets a handle for the container div, and replaces its HTML contents. 
     // Not the most elegant, but it works. 
     $("#container_imagem_resultado").html('<p><img src="<%=pathBase%>access.do?dispatchParam=createImage&time=' + new Date().getTime() + '" /></p>'); 
    } 

    // Schedule it after 1 second (1000ms). 
    setTimeout(showImage, 1000); 
}); 

和HTML:

<div id="container_imagem_resultado"> 
    <p> 
     <!-- TODO placeholder --> 
    </p> 
</div> 

作爲一個方面說明,是不是1秒有點長加載延遲?除非你打算在圖像加載時出現明顯的延遲,或者在1秒後加載圖像還有另一個原因,否則應該降低很多,否則可能會出現破碎的窗口。

+0

謝謝,我會試試看。 編輯:滯後的目的,但也得益於提示。 – igorfeiden