包含jsp中的变量?
问题描述:
我有一个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绝对不能访问该变量。但是它如何访问这个变量?
答
该请求通常用于存储处理请求的所有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攻击。
答
使用请求属性传递 '记录' 值
request.setAttribute("myLogged",logged);
读该例在包含的JSP文件中的属性值:
String logged = request.getAttribute("myLogged");
或只是
${myLogged}
当我改变我的第一个脚本到你的代码整个页面不工作了:S – 2012-07-05 17:11:38
请详细说明。究竟会发生什么?当然,就像每个taglib一样,它的实现必须位于webapp的类路径中,并且taglib必须在JSP的顶部声明。请参阅http://stackoverflow.com/tags/jstl/info,花点时间在使用它之前了解它是如何工作的。 – 2012-07-05 17:14:57
父JSP不能访问已记录的变量,这当然很清楚。 但还有一个问题。我们不允许使用这个。我们的教授说,我们不允许在代码中使用需要“$”的所有东西:S – 2012-07-05 17:19:46