【问题标题】:How do I access <c:set var> in a <%= scriptlet %> [duplicate]如何在 <%= scriptlet %> 中访问 <c:set var> [重复]
【发布时间】:2020-12-05 20:01:14
【问题描述】:

我开始关注一篇关于 JSTL 标签的教程。使用的存储库教程太旧了,所以我想尝试使用一些较新的版本。不幸的是,我现在被困住了。我会告诉你我做了什么,所以我希望你能帮助我。

我从这两个链接下载了 2 个 jar 文件:apiimplementation

我得到的 Jar 文件,我在 WebContent/Web-INF/lib 中复制。现在如果我这样做,我会得到一个错误:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<html>
<body>

<c:set var="varA" value="hello world" />
<%=varA %> //varA cannot be resolved to a variable

</body>
</html>

说实话,当 jar 文件确实位于我项目的 lib 文件夹中时,我不知道为什么我们需要 import 语句。另外,有谁知道这里出了什么问题以及为什么编辑器找不到我的变量 varA

【问题讨论】:

    标签: jsp jstl scriptlet


    【解决方案1】:

    使用 JSTL 标记设置的变量不能通过 scriptlet直接 访问。可以通过两种方式访问​​varA

    1.使用 JSTL 标签:

    <c:set var="varA" value="hello world" />
    <c:out value="${varA }"></c:out>
    

    2。使用pageContext.getAttribute

    <c:set var="varA" value="hello world" />
    <%=pageContext.getAttribute("varA")%>
    

    【讨论】:

    • 你是对的。你能告诉我为什么我在第 1 行也需要 import 语句吗?将 jar 文件复制到 lib 文件夹中还不够吗?
    • 我在您的问题中没有看到任何import 声明。
    • 我的意思是&lt;%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %&gt;。那你怎么称呼这个? :) 我的问题是为什么我们需要这条线。
    • @Stefan - 这称为 taglib 指令。这是告诉应用程序服务器您将使用标记库的方式(例如,您问题中的语句通知应用程序服务器您将使用来自 JSTL core 标记库的标记。检查@ 987654321@了解更多信息。如有任何疑问/问题,请随时发表评论。
    • 谢谢!你知道为什么我不能访问在“普通”脚本中在 JSTL 中声明的变量吗?
    猜你喜欢
    • 2017-06-27
    • 1970-01-01
    • 1970-01-01
    • 2010-09-12
    • 2016-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多