1

Javaコードの処理が完了するまで、メッセージを「お待ちください........」と表示したいと思います。

page1.jsp-テキストボックスと送信ボタンがあるフォーム。送信ボタンをクリックすると、フォームの送信とpage2.jspの呼び出しが行われます。

page2.jspで、page1.jspからパラメータを要求し、ユーザーIDを返す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で同時に取得したuseridで処理を行っています。

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

ただし、その「待機」メッセージは、すべての処理が終了した後に表示されます。userIdを取得したらすぐに表示したい。そして、そのuserIdのバックグラウンド処理を続行します。

4

2 に答える 2

1

JavaScript を使用して多くのことを行うことができます。ここに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>
于 2012-04-07T23:04:01.237 に答える
0

IE8 と Chrome 18 でテストしました。サーバーに制限がある場合、問題が発生する可能性があります。たとえば、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>
于 2012-04-07T03:34:00.060 に答える