2012-11-09 51 views
1

我試圖在執行轉發並且未執行前,在jsp頁面的正文中警告javascript內的消息。在JSP轉發之前顯示JavaScript警告

下面的代碼

<% 
... 
out.write("<script type='text/javascript'>\n"); 
out.write("alert(" + "' Hello '" + ");\n"); 
out.write("</script>\n"); 

request.getRequestDispatcher("secondpage.jsp").forward(request, response); 
%> 

在這裏,我想我之前通過控制到另一個JSP page.How我能做到這一點,提醒消息。 這裏,如果我刪除轉發部分警報消息顯示在警告框中。

回答

3

forward替換未發送給瀏覽器的頁面內容。

由於瀏覽器甚至沒有收到您編寫的腳本,它無法執行它。

假如你希望用戶看到被重定向之前警報一秒鐘,你可以這樣做:

<% 
out.write("<script type='text/javascript'>\n"); 
out.write("alert(' Hello ');\n"); 
out.write("setTimeout(function(){window.location.href='secondpage.jsp'},1000);"); 
out.write("</script>\n"); 
%> 
+0

任何其他方式來實現這一點。 –

+0

使用window.location,因爲document.location已被棄用 – mplungjan

+0

@mplungjan我更喜歡window.location,這更符合邏輯,所以我會改變它。 –

2

你爲什麼要通過Java在JSP編寫JS代碼小腳本而JSP本身已提供了一個優秀的模板來編寫HTML/JS代碼純?

無論如何,只需使用JS來執行重定向而不是JSP。您知道,Java/JSP在web服務器上運行,並生成HTML/JS,而HTML/JS只能在webbrowser中運行。前向基本上取代了請求/響應目標,如果響應未提交,則它會丟棄預先寫入響應緩衝區的所有內容。

這裏是你如何能在正常的HTML/JS做到這一點:

<script> 
    alert('Hello'); 
    window.location = 'secondpage.jsp'; 
</script> 

就是這樣。看,你根本不需要把它放在一些微妙的腳本里。把它整個放在JSP文件中。

+0

除了不使用超時中斷後退按鈕。所以如果你不做超時,一個.replace是可取的 – mplungjan

+0

感謝您的建議。我通過java scriplets編寫JS代碼,因爲我想訪問一些java內容以在JS中收到警報。有沒有其他的選擇。 –

+0

只需使用EL。例如。 '警報( '$ {} bean.property')'。 – BalusC