在脚本块<% XY %>中直接使用EL ${XY}。

7
在我的项目中,每次打开JSP页面时都需要分配一个变量。我尝试使用JSP中的脚本片段<% %>和EL表达式${}来获取变量,但似乎不起作用。
 <% String korrekteAntwort=${frage.korrekteAntwort};%>
 <%session.setAttribute("korrekteAntwort", korrekteAntwort);%>

korrekteAntwort=${}之后出现了错误,是否可以直接在脚本中将变量从EL中分配给变量?

1个回答

10
你在混合使用脚本标记和EL表达式,并期望它们能够“同步运行”。这是不可行的。一种是编写JSP的老式方法,而另一种则是编写JSP的现代方法。你应该只使用其中的一种,而不是两者都用。

回到具体问题, EL通过{{link3:PageContext#findAttribute()}}解析变量,因此在脚本标记中也需要完全相同的操作。

Frage frage = (Frage) pageContext.findAttribute("frage");
session.setAttribute("korrekteAntwort", frage.getKorrekteAntwort());

然而,正如所说,这是一种旧式的 JSP 使用方法,并不一定是您所考虑到的功能要求,但没有详细说明的“最佳”方式。现代化的 JSP 方法是使用 JSTL<c:set>

<c:set var="korrekteAntwort" value="${frage.korrekteAntwort}" scope="session" />

从那一行开始,这将作为会话范围中的${korrekteAntwort}可用,这正是该scriptlet行所做的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接