2012-07-05 91 views
0

我有一個JSP文件,其中包含另一個JSP文件。在他們兩個我需要一個特殊的變量。 這是JSP的代碼,其中包括其他JSP的一部分:包含jsp中的變量?

<%String logged = request.getParameter("logged"); 
out.print(
"<h3> Auftragliste </h3>" + "Eingeloggt als: " 
+ logged 
+ "<br /><hr /><br />"); 
%> 

<!-- DAS IST DIE EIGENTLICHE AUFTRAGLISTE, INNERHALB DES DIVS --> 
<div id="AutoUpdte"> 
    <jsp:include page="AuftragListe.jsp" /> 
</div> 

的此請求「登錄」工作正常。現在這裏是包含的JSP的一部分:

+ "<form method='POST' " 
     + "name='Auftrag" 
     + i 
     + "' action='Annehmen'>" 
     + "<input type='hidden' name='ID' value='" 
     + auftraege.get(i).ID 
     + "' />" 
     + "<input type='hidden' name='von' value='" 
     + auftraege.get(i).von 
     + "' />" 
     + "<input type='hidden' name='nach' value='" 
     + auftraege.get(i).nach 
     + "' />" 
     + "<input type='hidden' name='object' value='" 
     + auftraege.get(i).object 
     + "' />" 
     + "<input type='hidden' name='reward' value='" 
     + auftraege.get(i).reward 
     + "' />" 
     + "<input type='hidden' name='logged' value='" 
     + logged 
     + "'>" 
     + "<center>" 
     + "<input class='auftragannehmen' type='submit' value=''/> " 
     + "</center>" 
     + "</form>" 

在這個JSP中,我要求變量「logged」,就像我上面做的那樣。但是,當我單擊按鈕並且窗體開始時,下一步無法訪問「已記錄」變量。

我的錯誤在哪裏?

謝謝!

編輯:包含的JSP絕對不能訪問該變量。但是它如何訪問這個變量?

回答

0

該請求通常用於存儲處理請求的所有Servlet和JSP都必須可訪問的屬性。但是在這裏,這是不必要的,因爲變量是請求參數的值。像在父JSP中一樣使用request.getParameter("logged")。這就是說,你似乎完全錯過了使用JSP的點,這是爲了避免使用Java代碼和醜陋的字符串連接(可以直接從servlet完成)來生成HTML標記。瞭解JSTL和JSP EL,並避免JSP中的瘟疫等腳本。例如,你的第一個小腳本應該被改寫爲:

<h3> Auftragliste </h3> 
Eingeloggt als: <c:out value="${param.logged}"/> 
<br /><hr /><br /> 

注意的是,使用<c:out>這裏可以確保參數正確HTML轉義,從而避免各種XSS攻擊。

+0

當我改變我的第一個腳本到你的代碼整個頁面不工作了:S – 2012-07-05 17:11:38

+0

請詳細說明。究竟會發生什麼?當然,就像每個taglib一樣,它的實現必須位於webapp的類路徑中,並且taglib必須在JSP的頂部聲明。請參閱http://stackoverflow.com/tags/jstl/info,花點時間在使用它之前瞭解它是如何工作的。 – 2012-07-05 17:14:57

+0

父JSP不能訪問已記錄的變量,這當然很清楚。 但還有一個問題。我們不允許使用這個。我們的教授說,我們不允許在代碼中使用需要「$」的所有東西:S – 2012-07-05 17:19:46

0

使用請求屬性傳遞 '記錄' 值

request.setAttribute("myLogged",logged); 

讀該例在包含的JSP文件中的屬性值:

String logged = request.getAttribute("myLogged"); 

或只是

${myLogged}