2015-06-03 3 views
0

Я новичок в мире JSP. У меня есть это веб-приложение, которое вызывает страницу ниже, страницу result.jsp. Эта страница вызывается после отправки в форме, а класс действий генерирует изображение из метода createImage, вызываемого dispatchParam.Подождите, чтобы вызвать метод со страницы действий

Фактическая часть коды заключается в следующем:

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

Мне нужно создать некоторый триггер, чтобы страница ждет 1s перед вызовом img тега.

Как я могу это сделать? Есть ли способ динамически вставить на страницу ответа HTML тег после этого ожидания 1s? Добавил бы <%Thread.sleep(1000);%> непосредственно перед тегом img?

+1

Конечно, «Thread.sleep» работает на стороне * сервера *. Используйте тайм-аут JS и задайте атрибут источника при его запуске. –

+0

Спасибо, я понимаю эту идею. Но мог ли я сделать это на странице? Я видел некоторые примеры «тайм-аута» в Интернете, но не мог понять, что делать в моем случае. – igorfeiden

+0

Написав javascript - я не уверен, что еще сказать вам, вы знакомы с JavaScript? –

ответ

0

Выполнение задержки на Java (на стороне сервера) на странице, даже в скриптлет, приведет только к задержке отправки страницы в браузер клиента, что приведет к длительной паузе до получения страницы , или (в некоторых случаях) половину загруженной страницы с нечетной задержкой, пока остальная часть не будет загружена.

Чтобы отложить загрузку чего-либо на стороне клиента, лучшим ответом является использование 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 секунду, вы должны сделать его намного ниже, иначе это может показаться разбитым окном.

+0

Спасибо, я попробую. РЕДАКТИРОВАТЬ: Задержка предусмотрена, но благодаря наконечнику тоже. – igorfeiden

Смежные вопросы