在我的项目中,每次打开 JSP 时我都必须分配一个变量。
我用小脚本试过了 <% %>
在 JSP 和 EL 中 ${}
返回变量。
但是好像不行。
<% String korrekteAntwort=${frage.korrekteAntwort};%>
<%session.setAttribute("korrekteAntwort", korrekteAntwort);%>
korrekteAntwort=${}
后出现错误, 难道不能在 scriptlet 中直接从 EL 分配一个变量吗?
最佳答案
您正在混合使用 scriptlet 和 EL 并期望它们“同步”运行。那是行不通的。 The one is an oldschool way of writing JSPs和 the other is a modern way of writing JSPs .您应该使用其中之一,而不是两者。
回到具体问题,在幕后,EL 通过 PageContext#findAttribute()
解析变量.因此,只需在 scriptlet 中执行完全相同的操作即可。
Frage frage = (Frage) pageContext.findAttribute("frage");
session.setAttribute("korrekteAntwort", frage.getKorrekteAntwort());
但是,如前所述,这是使用 JSP 的老派方式,不一定是 the functional requirement which you've had in mind, but didn't tell anything about 的“最佳”方式.现代 JSP 方式将使用 JSTL <c:set>
:
<c:set var="korrekteAntwort" value="${frage.korrekteAntwort}" scope="session" />
这将在 session 范围内作为 ${korrekteAntwort}
可用。从那一行开始,这正是 scriptlet 的那一行所做的。
关于java - 在 scriptlet <% XY %> 中直接使用 EL ${XY},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14007689/