2012-04-10 61 views
0

我在轉發到.jsp頁面時遇到問題。讓我描述我的程序:Servlet中的RequestDispatcher.forward(req,res)沒有任何效果

在Servlet我想確認一些東西,所以我做了.forward()到.jsp,其中包含了javascript,並在$(document).ready(function()中確認了...

如果選擇OK,我創建新的XMLHttpRequest()並設置一個參數confirm = 1,並返回到前一個Servlet,其中必須在確認後執行的代碼塊(confirm = 1)按預期執行。它的.forward回.JSP該塊的最後一行似乎已經完全沒有效果

servlet代碼:

if("1".equals(request.getParameter("confirm"))){ 
    ... 
    setting some request.setAttribute(); 
} 
else{ 
    ... 
} 

RequestDispatcher rd = request.getRequestDispatcher(...); 
rd.forward(req, res); 

實際上,我看到了正確的頁面,但它是在我認爲確認之前。它應該可能已被重新加載,因爲我必須從請求中獲取一些屬性,並根據這些屬性值顯示jquery的一些內容。

那麼你認爲.forward()沒有效果的原因是什麼?我可以強制頁面以某種方式重新加載?

編輯:第一次執行Servlet代碼(否則).forward()調用工作正常。但下一次它什麼都不做,無論我嘗試轉發到哪個頁面。就像我根本沒有前進的呼叫。奇怪。我真的希望有人對此有一個解釋。

EDIT2:這不是前向問題,我猜。如果我做system.out.print所需的屬性,我會得到正確的值。但爲什麼頁面不能重新加載?即使我轉發到不同的.jsp,我仍然可以看到前一個。

+0

http://docs.oracle.com/javaee/5/api/javax/servlet/RequestDispatcher.html#forward%28javax.servlet.ServletRequest,%20javax.servlet.ServletResponse%29 – 2012-04-10 08:20:05

+0

就像我說過的,這很可能不轉發導致問題。或者是?我該如何解決這個問題? – petter386 2012-04-10 08:49:13

+0

提供使AJAX Servlet調用的代碼 – 2012-04-10 10:03:14

回答

0

我沒有真正設法解決我的問題,沒有加載.jsp頁面。實際上我只需要將一些屬性從Servlete傳遞給javascript,所以我使用jQuery ajax調用PrintWriter,因此我將這些屬性作爲javascript函數中的一個鍵:值對。然後,我簡單地使用JavaScript將這些值設置爲一些跨度。

0

在確認的情況下, 你確定你到最後,並打電話向前?

可能你會得到一個空指針或類似的東西。

嘗試添加system.out.println()或在調試模式下運行。

+0

我試過調試它,但似乎一切都正確執行除了向前。 – petter386 2012-04-10 08:04:11

+0

我想問題不在於轉發。我在.jsp中添加了一些屬性的system.out.print,並且它具有正確的值。但爲什麼不重新加載頁面? – petter386 2012-04-10 08:07:31

+0

即使我轉發到不同的頁面,我仍然看到相同的.jsp。 – petter386 2012-04-10 08:08:20