2015-03-31 94 views
0

所以,我有這個servlet應該傳遞一個參數到.jsp文件:Servlet的不發送參數.jsp文件

request.setAttribute("parameter1", new BigDecimal(50)); 
RequestDispatcher requestDispatcher = request.getRequestDispatcher("/WEB/pages/page1.jsp"); 
requestDispatcher.forward(request, response); 

然而,當我嘗試用裏面的一些JavaScript代碼來提醒這個參數jsp,我收到一條空的消息。另外,如果我使用JSP Expression將屬性打印到Java控制檯,我得到null ..所以,我認爲我沒有正確地發送參數在這個servlet中,有人可以幫我嗎?

+0

你試過嗎? http://stackoverflow.com/questions/7933866/get-request-attributes-in-javascript – 2015-03-31 13:57:02

+0

@BrianKates,沒有工作..但是,我剛剛發現我認爲是錯誤,我要更新該職位。 – yat0 2015-03-31 14:47:05

回答

1

有兩種方法可以完成此操作。

使用JSP 表達你會使用<%= %>如(注意沒有;末)

data : [<%= parameter1 %>, Y, Z] 

第二和優選方法是使用JSP EL語法和引用request直接使用屬性${ } as

data : [${parameter1}, Y, Z] 

第一個選項要求您將第th e屬性不在其範圍之內。第二個不是。

BigDecimal parameter1 = (BigDecimal) request.getAttribute("parameter1"); 
+0

好吧,我可以通過那個$ {parameter1}提醒參數,但是,我剛剛注意到這個參數是空的(我提醒一個空的消息)..所以,在其他單詞,也許錯誤是我在servlet中傳遞參數的方式,因爲setAttribute沒有完成這項工作。可能嗎? – yat0 2015-03-31 14:45:55

+0

用你的JS/JSP代碼更新問題。 – 2015-03-31 15:24:56

+0

問題解決了,我打算髮表答案。感謝您回答:) – yat0 2015-03-31 15:44:37

0

SOLUTION:

我實在看不出差別,但只是改變:

request.setAttribute("parameter1", new BigDecimal(50)); 
RequestDispatcher requestDispatcher = request.getRequestDispatcher("/WEB/pages/page1.jsp"); 
requestDispatcher.forward(request, response); 

到:

request.setAttribute("parameter1", new BigDecimal(50)); 
request.getRequestDispatcher("/WEB/pages/page1.jsp").forward(request, response); 

允許alert(${parameter1});顯示我通過的實際價值,但是,我仍然去用java讀取參數時爲null。此外,一些JavaScript代碼我不得不顯示圖表停止工作。

所以,我試圖通過會議傳遞的參數:

request.getSession().setAttribute("parameter1", new BigDecimal(50)); 
request.sendRedirect("/WEB/pages/page1.jsp"); 

這工作得很好,我可以讓我的參數都與JavaScript和Java在.jsp文件。

似乎重定向到一個新的請求使用sendRedirect不會崩潰的JavaScript代碼在.jsp文件,但是,我真的不知道爲什麼這種方法工作面對其他人,所以我爲這個窮人道歉回答,我從來沒有真正使用過servlet和Jsp,但我真的很欣賞比我更確切的答案,所以我也學到了更多。