JSTL - 输出未按预期输出

发布于 2024-12-26 11:57:40 字数 907 浏览 1 评论 0原文

下面是我使用 jstl 1.2 在 index.jsp 中的代码。

 <%@ taglib prefix = "c" uri="http://java.sun.com/jstl/core"%>
 <% String[] setName = {"Hello", "you", "are", "using", "jstl", "in", "jsp"};
 request.setAttribute("getName", setName);
 %>
 <html>
 <body>
 <table>
 <tr><td>Print</td></tr>
 <c:forEach var="itemName" items="#{getName}" >
 <tr>
 <td>${itemName}</td>
 </tr>
 </c:forEach>
 </table>
 </body>
 </html>

我期望的输出如下

 Print
 Hello
 you
 are
 using
 jstl
 in
 jsp

但是下面是我得到的

  Print
  #{name}

请让我知道我缺少的地方

下面是我在 WEB-INF/lib 文件夹中唯一的 jar 文件 jstl-1.2.jar

先谢谢

Fahim

注意: 添加 Java 和 JSP 标签,因为了解 Java 和 JSP 的人可能会知道 JSTL也...

Below is the code I have in index.jsp using jstl 1.2.

 <%@ taglib prefix = "c" uri="http://java.sun.com/jstl/core"%>
 <% String[] setName = {"Hello", "you", "are", "using", "jstl", "in", "jsp"};
 request.setAttribute("getName", setName);
 %>
 <html>
 <body>
 <table>
 <tr><td>Print</td></tr>
 <c:forEach var="itemName" items="#{getName}" >
 <tr>
 <td>${itemName}</td>
 </tr>
 </c:forEach>
 </table>
 </body>
 </html>

The output I was expecting is as below

 Print
 Hello
 you
 are
 using
 jstl
 in
 jsp

However below is what I am getting

  Print
  #{name}

Please let me know where I am missing

Below is the only jar file I have in WEB-INF/lib folder
jstl-1.2.jar

Thanks in advance

Fahim

Note: Adding Java and JSP tag as person who have knowledge of Java and JSP might be knowing JSTL too...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

似梦非梦 2025-01-02 11:57:40

在这里,

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

您指定了错误的 JSTL 标记库 URL。这是针对 JSTL 1.0 的。在 JSTL 1.1 之后,路径中需要有 /jsp。另请参阅 JSTL 1.1 标记库文档

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

至于代码的(并回复所有抱怨使用 ${} 代替的重复答案),#{} 语法仅在 JSP 中有效目标是 Servlet 2.5 / 2.1 兼容容器,其 web.xml 符合 Servlet 2.5 规范。 Tomcat 6.0 就是此类容器的一个示例。 #{} 确实无法在 Tomcat 5.5 或更早版本等旧容器上的 JSP 标记中工作。

为了清楚起见并避免初学者混淆,最好在 JSP 标记中始终使用 ${}。还最好使用自记录变量名称。

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<% 
    String[] names = {"Hello", "you", "are", "using", "jstl", "in", "jsp"};
    request.setAttribute("names", names);
%>
<!DOCTYPE html>
<html lang="en">
    <head>
        <title>JSTL demo</title>
    </head>
    <body>
        <table>
            <tr><td>Print</td></tr>
            <c:forEach items="${names}" var="name">
                <tr><td>${name}</td></tr>
            </c:forEach>
        </table>
    </body>
</html>

另请参阅:

Here,

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

You're specifying the wrong JSTL taglib URL. This one is for JSTL 1.0. After JSTL 1.1 it requires a /jsp in the path. See also the JSTL 1.1 tag library documentation.

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

As to the of the code (and to reply on all those duplicate answers complaining to use ${} instead), the #{} syntax will only work inside JSP when you're targeting a Servlet 2.5 / 2.1 compatible container with a web.xml conforming Servlet 2.5 spec. Tomcat 6.0 is an example of such a container. The #{} will indeed not work in JSP tags on older containers such as Tomcat 5.5 or older.

For clarity and to avoid confusion among starters, better use ${} all the time in JSP tags. Also better use self-documenting variable names.

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<% 
    String[] names = {"Hello", "you", "are", "using", "jstl", "in", "jsp"};
    request.setAttribute("names", names);
%>
<!DOCTYPE html>
<html lang="en">
    <head>
        <title>JSTL demo</title>
    </head>
    <body>
        <table>
            <tr><td>Print</td></tr>
            <c:forEach items="${names}" var="name">
                <tr><td>${name}</td></tr>
            </c:forEach>
        </table>
    </body>
</html>

See also:

清欢 2025-01-02 11:57:40

在 JSTL 1.2 中,您不想在纯 JSP 中使用 #{name},那只是一个 JSF 工件。相反,只需使用 ${name}。

In JSTL 1.2, you don't want to use #{name} in pure JSP, that's only a JSF artifact. Instead, simply use ${name}.

红墙和绿瓦 2025-01-02 11:57:40

您需要使用表达式语言来引用项目,例如 ${name}

您在名称前使用 # 而不是 $

请告诉我此问题是否可以解决。

You need to refer items using expression language like ${name}

U r using # instead of $ before name

Let me know if this resolves.

无边思念无边月 2025-01-02 11:57:40

#{name} 不是有效的 Java 变量引用 - 看起来您将它与 JQuery 选择器混淆了。
无论如何尝试只使用 items="${name}"

#{name} is not a valid Java variable reference - looks like you are confusing it with JQuery selector.
Anyways try just using items="${name}"

花开浅夏 2025-01-02 11:57:40

#{name} 应该像 ${name}

哦!可能是与 JSTL 相关的 jar。检查 链接 将这些 jar 包含在您的项目中

#{name} is should be like ${name}

oh! might be the jars related to JSTL. check thins link for those jars to include in your project

忆悲凉 2025-01-02 11:57:40

下面是我正在使用的最终代码,它正在运行...

发布以便有人可以使用它...明天可能对我有帮助;)

 <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 

 "http://www.w3.org/TR/html4/loose.dtd">

 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
 <% String[] setName = {"Hello", "you", "are", "using", "jstl", "in", "jsp"};
 request.setAttribute("getName", setName);
 %>
 <html>
 <body>
 <table>
 <tr><td>Print</td></tr>
 <c:forEach var="itemName" items="#{getName}">
 <tr>
 <td>${itemName}</td>
 </tr>
 </c:forEach>
 </table>
 </body>
 </html>

学习:我正在使用 <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %> 而不是 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

Below is the final code I am using and it is running...

Posting so that someone can use it... Might help me tomorrow ;)

 <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 

 "http://www.w3.org/TR/html4/loose.dtd">

 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
 <% String[] setName = {"Hello", "you", "are", "using", "jstl", "in", "jsp"};
 request.setAttribute("getName", setName);
 %>
 <html>
 <body>
 <table>
 <tr><td>Print</td></tr>
 <c:forEach var="itemName" items="#{getName}">
 <tr>
 <td>${itemName}</td>
 </tr>
 </c:forEach>
 </table>
 </body>
 </html>

Learning : I was using <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %> instead of <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文