当前位置: 首页 > 面试题库 >

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

李意致
2023-03-14
问题内容

在我的项目中,每次打开JSP时都要分配一个变量。我<% %>在JSP和EL 中用scriptlet尝试过,它可以${}返回变量。

但似乎不起作用。

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

之后出现错误korrekteAntwort=${},是否无法在scriptlet中直接从EL分配变量?


问题答案:

您正在混合 脚本
和EL,并期望它们“同步”运行。那只是行不通的。一个是写的JSP的旧校园的方式 和另一种是写的JSP的现代生活方式。您应该同时使用一个或多个。

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

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}从该行开始,它将在会话范围中可用,这正是该 脚本 行所做的。



 类似资料:
  • 问题内容: 我的package.json看起来像: 我要运行的js脚本是app.js。我无法使用 节点app.js 直接运行它,因为app.js包含新的语言语法。 因此,我必须按照上面定义的启动脚本,使用 npm start 通过babel运行它。这里没有问题。 我的问题是如何直接在命令行中运行cmd,可以做到吗?类似于: npm运行babel-node –presets env app.js 问

  • 问题内容: 每次执行脚本时,我都试图编写一个小的脚本来挂载VirtualBox共享文件夹。我想用Python来做,因为我正在尝试学习它的脚本。 问题是我需要特权才能启动安装命令。我可以将脚本作为sudo运行,但是我更喜欢它自己制作sudo。 我已经知道将密码写入.py文件并不安全,但是我们谈论的是根本不重要的虚拟机:我只想单击.py脚本并使它工作。 这是我的尝试: 我的python版本是2.6 问

  • 问题内容: 我将在开头说“不,找到一种不同的方式来做这件事”是一个可以接受的答案。 是否存在一种可靠的方法来将少量JSON存储在bash变量中,以便在从同一脚本运行的AWS CLI命令中使用? 我将在Jenkins上运行一项工作,该工作正在更新AWS Route53记录,这需要使用记录中的更改进行UPSERTing JSON文件。因为它是从Jenkins运行的,所以没有本地存储可以保存此文件,因此

  • 我的package.json看起来像: 我想运行的js脚本app.js.我不能直接使用节点app.js运行它,因为app.js包含新的语言语法。 因此,我必须按照上面定义的启动脚本,使用NPMStart通过babel运行它。这里没有问题。 我的问题是如何在命令行中直接运行cmd,可以吗?类似的东西: npm运行babel节点——预设环境应用程序。js

  • 如果考虑到可伸缩性,让所有使用者调用一个负责管理特定队列的节点意味着所有流量都流向一个节点。 Kafka允许使用者从最近的节点获取数据,如果该节点包含leader的副本,那么ActiveMQ上有类似的内容吗?

  • 问题内容: 我正在尝试创建用于设置Docker容器的Shell脚本。我的脚本文件如下所示: 运行此脚本文件将在新调用的bash中运行容器。 现在,我需要运行一个脚本文件(test.sh),该文件已经位于上述给定的shell脚本的容器内(例如:cd /path/to/test.sh && ./test.sh),该怎么做? 问题答案: 您可以使用以下命令在正在运行的容器中运行命令: 并从bash会话运