【问题标题】:Use EL ${XY} directly in scriptlet <% XY %>在 scriptlet <% XY %> 中直接使用 EL ${XY}
【发布时间】:2012-12-10 01:40:22
【问题描述】:

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

但它似乎不起作用。

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

korrekteAntwort=${}之后有错误,是不是可以在scriptlet中直接从EL赋值变量?

【问题讨论】:

    标签: java jsp el scriptlet


    【解决方案1】:

    您正在混合 scriptlet 和 EL,并期望它们“同步”运行。那是行不通的。 The one is an oldschool way of writing JSPsthe other is a modern way of writing JSPs。您应该使用其中一个,而不是两个。

    回到具体问题,在幕后,EL 通过PageContext#findAttribute() 解析变量。因此,只需在 scriptlets 中执行完全相同的操作即可。

    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 &lt;c:set&gt;:

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

    这将在会话范围内作为${korrekteAntwort} 从该行开始提供,这正是 scriptlet 行所做的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-27
      • 1970-01-01
      • 2011-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多