5

在我的项目中,每次打开 JSP 时我都必须分配一个变量。<% %>我在 JSP 和 EL中使用 scriptlet 进行了尝试,它${}返回了变量。

但它似乎不起作用。

 <% String korrekteAntwort=${frage.korrekteAntwort};%>
 <%session.setAttribute("korrekteAntwort", korrekteAntwort);%>

之后有错误korrekteAntwort=${},难道不能直接在scriptlet中从EL中赋值变量吗?

4

1 回答 1

9

您正在混合scriptlet和 EL,并期望它们“同步”运行。那是行不通的。一种是编写 JSP 的老式方法,另一种是编写 JSP的现代方法。您应该使用其中一个,而不是两者都使用。

回到具体问题,在幕后,EL 通过PageContext#findAttribute(). 所以只需在scriptlets中做同样的事情。

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所做的。

于 2012-12-23T00:59:20.550 回答