我有一个包含另一个JSP文件的JSP-File。在他们两个我需要一个特殊的变量。 这是包含其他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 :(得分:0)
该请求通常用于存储必须可供处理请求的所有servlet和JSP访问的属性。但在这里,由于变量是请求参数的值,因此不必要。只需像在父JSP中那样使用request.getParameter("logged")
。
也就是说,您似乎完全忽略了使用JSP的重点,即使用Java代码和丑陋的String连接(可以直接从servlet完成)来避免生成HTML标记。学习JSTL和JSP EL,并避免像JSP中的瘟疫一样的scriptlet。例如,您的第一个scriptlet应该重写为:
<h3> Auftragliste </h3>
Eingeloggt als: <c:out value="${param.logged}"/>
<br /><hr /><br />
请注意,在此处使用<c:out>
可确保参数正确地进行HTML转义,从而避免各种XSS攻击。
答案 1 :(得分:0)
使用请求属性传递“已记录”值
request.setAttribute("myLogged",logged);
读取包含的JSP文件中的属性值,如下所示:
String logged = request.getAttribute("myLogged");
或只是
${myLogged}