JSTL - 输出未按预期输出
下面是我使用 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
在这里,
您指定了错误的 JSTL 标记库 URL。这是针对 JSTL 1.0 的。在 JSTL 1.1 之后,路径中需要有
/jsp
。另请参阅 JSTL 1.1 标记库文档 。至于代码的(并回复所有抱怨使用
${}
代替的重复答案),#{}
语法仅在 JSP 中有效目标是 Servlet 2.5 / 2.1 兼容容器,其web.xml
符合 Servlet 2.5 规范。 Tomcat 6.0 就是此类容器的一个示例。#{}
确实无法在 Tomcat 5.5 或更早版本等旧容器上的 JSP 标记中工作。为了清楚起见并避免初学者混淆,最好在 JSP 标记中始终使用
${}
。还最好使用自记录变量名称。另请参阅:
Here,
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.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 aweb.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.See also:
在 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}.
您需要使用表达式语言来引用项目,例如 ${name}
您在名称前使用 # 而不是 $
请告诉我此问题是否可以解决。
You need to refer items using expression language like ${name}
U r using # instead of $ before name
Let me know if this resolves.
#{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}"
#{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
下面是我正在使用的最终代码,它正在运行...
发布以便有人可以使用它...明天可能对我有帮助;)
学习:我正在使用
<%@ 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 ;)
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" %>