2015-06-30 57 views
-3

我想從JSP1傳遞兩個值到JSP2。我在JSP1和JSP2中使用下面給出的代碼。我想在JSP2中顯示鍵和值的值,但顯示在下面的「輸出」部分中給出的輸出。我希望將這些值傳遞給JSP2以對它們執行一些邏輯。在JSP2中的邏輯被執行後,我想回到JSP1。從JSP 1到JSP 2的數據

因此,JSP1從Java中的Controller類獲取值。 JSP1中有一個循環,JSP1中的循環內部調用了JSP2。現在我無法訪問從循環傳遞的值,但是我可以在JSP1和JSP2中訪問從Controller類發送給JSP1的值。所以這個問題正在引發,因爲循環中的值沒有被傳遞給JSP2。

JSP1

<% request.setAttribute("key", "${entityitem.key}"); %> 
<% request.setAttribute("value", "${entityitem.value}"); %> 
<jsp:include page="JSP2.jsp"/> 

JSP2

<%= request.getAttribute("key") %> : <br> 
<%= request.getAttribute("value") %> 

輸出:

${entityitem.key} 
${entityitem.value} 

慾望d輸出: 價值觀

${entityitem.key} 
${entityitem.value}  
+0

一些解釋嗎? – VPK

+0

我能解決這個問題。我在回答部分發布了代碼 –

回答

0

您正在嘗試後您提交您要求獲取這些值? 如果沒有,您應該使用JSP2中的${entityitem.key}${entityitem.value}

如果您提交併且想要訪問變量,您需要有一個轉發請求而不是重定向請求,否則這些變量將被刪除,因爲您將收到一個新請求。

在你的情況下,你應該檢查你是否正確地初始化變量,並嘗試使用request.getSession().setAttribute()而不是request.setAttribute()來檢查變量是否正確傳遞。

+0

我想將這些值從JSP1發送到JSP2,以便在JSP2中執行一些邏輯,然後我想控制回到JSP1執行其他邏輯。 –

+0

因此,JSP1從Java中的Controller類獲取值。 JSP1中有一個循環,JSP1中的循環內部調用了JSP2。現在我無法訪問從循環傳遞的值,但是我可以在JSP1和JSP2中訪問從Controller類發送給JSP1的值。所以這個問題正在引發,因爲循環中的值沒有被傳遞給JSP2。 –

0

您已將JSP2.jsp加入您的JSP1.jsp。在編譯時,這些jsp將作爲單個頁面在瀏覽器中編譯和呈現。

因此而不是設置Objects再次Request範圍,則可以直接訪問他們在JSP2.jsp就像你在JSP1.jsp怎麼做。

直接訪問它就像你在JSP2.jsp

側面說明如何做到:避免使用scriplets,讀How to avoid Java code in JSP files?

+0

我曾嘗試過,它沒有工作。我現在會重試它。我應該使用 - 在我的JSP1中調用JSP2嗎? –

+0

你可以像這樣寫,也可以寫成<%@ include file =「relative url」>'。我猜你的網頁已禁用「EL」。請檢查你是否有這一行'<%@ page isELIgnored =「false」%>',如果是這樣的話刪除它 –

+0

試過了,我沒有得到JSP2中的值。 :(我從JSP1的循環中獲取$ {entityitem.key} $ {entityitem.value}的值,並且將它們傳遞給JSP2。問題是否存在?是否可以訪問JSP2中的值(如果它們是我想在理論上它應該起作用 –

0

請檢查下列事項

請確保您刪除此行你的jsp頁面

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 

並確保你是你唱Servlet 2.4或更高版本

在你的情況下,如果你想傳遞一些值,請不要包含一個jsp頁面。而不是重定向使用request.getRequestDispatcher()到第二個JSP頁面,並使用相同的RequestDispatcher我認爲你會得到

0

你想從一個JSP發送值到另一個JSP的值傳遞從第二個JSP頁面的值,但問題是,怎麼會這樣兩頁相互溝通?你必須調用一個jsp到另一個jsp中,否則你可以設置會話變量並嘗試在另一個變量中查找值。你在這裏做的是一樣的,但問題是,在會話集屬性中,你不是使用el表達式來設置值,而是傳遞字符串。

你可以使用cookies,你可以使用下一個jsp的值。如果可能的話使用requestdispatcher,因爲它比一切都好。

+0

JSP1從Java中的Controller類獲取值。 JSP1中有一個循環,JSP1中的循環內部調用了JSP2。現在我無法訪問從循環傳遞的值,但是我可以在JSP1和JSP2中訪問從Controller類發送給JSP1的值。所以這個問題正在引發,因爲循環中的值沒有被傳遞給JSP2。我使用 - 在JSP1中調用JSP2。我可以使用cookies/request調度程序訪問JSP2中JSP1循環中的值嗎? –

0

我能夠使用下面的代碼訪問JSP1中JSP1循環中的值。

守則JSP1:

<jsp:include page="JSP2.jsp"> 
<jsp:param name="listKey" value="${entityitem.key}"/> 
<jsp:param name="listValue" value="${entityitem.value}"/> 
</jsp:include> 

守則JSP2:

${param.listKey}