2010-12-03 54 views
2

我在正常執行的代碼中給出了一個字符串變量的值,但是如果發生異常,我會給它另一個值,問題是在catch塊的價值仍然是我分配第一相同。通過request.setAttribute()傳遞的值不可用request.getParameter()

這裏是我的代碼,首先在try塊中分配頁面值「addUser」,並在catch中給它「ErrorPage」的值,我將http請求中的頁面值發送給forword方法,並在裏面打印值的頁面。 我導致代碼的執行錯誤,我希望它通過catch塊,它會,但是當它發送頁面值的forword函數時,頁面的值是「addUser」而不是「ErrorPage」,儘管我將其分配給「ErrorPage」!

String page = "addUser"; 

try { 
    // ... 

    request.setAttribute("page", page); 
    forward(request, response); 
} catch (SQLException e) { 
    page = "ErrorPage"; 
    request.setAttribute("page", page); 
    forward(request, response); 
} 

這裏是前頁功能

String page = request.getParameter("page"); 
System.out.println("page is " + page); // each time it prints addUSer 

有人能幫忙嗎?和thanx提前。

+1

閱讀此:http://en.wikipedia.org/wiki/Don't_repeat_yourself很多可以消除 – BalusC 2010-12-03 18:37:36

+1

這贏得了't compile。你在try塊之前在本地定義`page`,然後在try塊內重新定義它,這會產生編譯錯誤,所以你給我們的代碼沒有用來證明問題 – 2010-12-03 18:39:51

+0

@ Mark Peters-我接受了我的代碼在這裏,我的代碼是非常大的,我只是給你一個快照我得到的問題,但thanx這個筆記。 – palAlaa 2010-12-03 18:59:51

回答

8

您要求request.getParameter()而不是request.getAttribute()以獲取該值。由於您已將其設置爲請求屬性,因此您還應該將其作爲請求屬性。

所以:

request.setAttribute("foo", foo); 

是隻能針對HTTP請求參數可通過

Object foo = request.getAttribute("foo"); // NOT getParameter(). 

getParameter()是,你可以在請求URL或HTML表單輸入字段指定。

0

除了BalusC的點「

在你的代碼已經宣佈兩個‘字符串頁’變量。這不會編譯。我認爲,要傳遞到請求在catch參數必須是」其他「頁面變量,但很難說,因爲這不是一個真實的例子。