Вопрос по – Отобразить ожидание сообщения ... как фоновая обработка

1

Я хочу отобразить сообщение как & quot; Пожалуйста, подождите ........ & quot; Пока мой Java-код заканчивает некоторую обработку.

page1.jsp - моя форма, где у меня есть текстовые поля и кнопка отправки. Когда я нажимаю кнопку «Отправить», я делаю форму отправки и вызываю page2.jsp

В page2.jsp я запрашиваю параметры из page1.jsp и перехожу к моему методу java, который возвращает мне идентификатор пользователя.

userid = myclass.mymethod(); 
if(userid!=null){ 
out.println("Record is in process.Please wait"); 
} 
response.sendredirect("page3.jsp?"+userid=userId); 

в page3.jsp я делаю обработку по идентификатору пользователя, который я получил в page2.jsp одновременно.

someid =request.getparameter(userid); 
process(someid ); 

Но это «Подожди» сообщение отображается после завершения всей обработки. Я хочу отобразить его, как только я получу идентификатор пользователя. И продолжайте фоновую обработку этого идентификатора пользователя.

@rickz. Да, пожалуйста, отправьте код? user1316131
Вы должны использовать Ajax, чтобы показать ожидающее сообщение ... Ramesh Kotha
В качестве альтернативы вы можете использовать out.flush (); но это не так надежно, как то, что предложил Рамеш. При использовании метода flush вы должны заставить браузер (в основном IE) начать рендеринг, добавив текст отступа в начале страницы перед сообщением ожидания. Спросите код, если вы хотите, чтобы он был опубликован. rickz

Ваш Ответ

2   ответа
0

то у вас могут быть проблемы. Например, он не будет работать на Google App Engine.

<html>
<body>
Some text here is necessary here for the IE browser to start displaying. 
Otherwise it will wait until it receives enough of a response to begin displaying      anything.
I am not sure how much padding is necessary. This works in IE 8.
<%
  out.print("<loading.gif' />");
  out.flush();
  //mock processing
  for(int x = 0; x < 3; x++){
                         out.print("<br/>Processing!");
                         out.flush();
                         Thread.sleep(3000);  
  }
%>
<br/>Finished processing. Here are the results...
</body>
</html>
Смотри мой второй ответ.
Спасибо, это сработало. Я пропустил out.flush (), из-за которого он не показывал messege. user1316131
Привет @ rickz. Как только моя обработка завершается, я показываю "Законченная обработка" messege. Но в этот раз я хочу спрятаться & quot; Пожалуйста, подождите .. & quot; messege в jsp. Можете ли вы указать мне, как я могу это сделать? user1316131
1

чтобы сделать много вещей. Вот одна идея.

<html>
<body>
<div id="wait">
Some text here is necessary here for the IE browser to start displaying. 
Otherwise it will wait until it receives enough of a response to begin displaying         anything.
I am not sure how much padding is necessary. This works in IE 8.
<%
  out.print("<little.gif' />");
  out.flush();
  for(int x = 0; x < 3; x++){
                         out.print("<br/>Processing!");
                         out.flush();
                         Thread.sleep(3000);  //mock processing
  }
%>
<br/></div>
<script>
  alert("Finished processing.");
  document.getElementById("wait").innerHTML = "Here are the results...";
</script>
</body>
</html>

Похожие вопросы