java - 在 scriptlet <% XY %> 中直接使用 EL ${XY}

标签 java jsp el scriptlet

在我的项目中,每次打开 JSP 时我都必须分配一个变量。 我用小脚本试过了 <% %>在 JSP 和 EL 中 ${}返回变量。

但是好像不行。

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

korrekteAntwort=${}后出现错误, 难道不能在 scriptlet 中直接从 EL 分配一个变量吗?

最佳答案

您正在混合使用 scriptlet 和 EL 并期望它们“同步”运行。那是行不通的。 The one is an oldschool way of writing JSPsthe 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/

相关文章:

javascript - 从 Java 创建 JavaScript 对象数组

JSP/Servlet 表达式语言私有(private)变量访问

java - 使用带有参数的 EL

java - 从 RichFaces 中的 xhtml 访问 bean 对象方法

Java 集合只保留 n 个最后插入的成员

java.util.concurrent 代码审查

java - 如何有效地递归调用服务器,直到得到正确的响应?

java - 贾斯珀报告 : how to download generated report?

java - 卡夫卡 : How can I create a fat Jar of the HDFS Kafka connector?

java - 将 ServletContext 属性的内容保存在 int 变量中