JSTL - 输出未按预期进行

时间:2012-01-12 05:20:20

标签: java jsp 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

提前致谢

希姆

注意:添加Java和JSP标记作为具有Java和JSP知识的人可能也知道 JSTL ...

6 个答案:

答案 0 :(得分:0)

#{name}不是有效的Java变量引用 - 看起来你将它与J​​Query选择器混淆了。 无论如何只想使用items =“$ {name}”

答案 1 :(得分:0)

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

答案 2 :(得分:0)

#{name}应该像${name}

哦!可能是与JSTL相关的罐子。检查那些要包含在项目中的jar link

答案 3 :(得分:0)

您需要使用表达式语言(例如 $ {name}

)来引荐项目

使用#代替姓名前的$

让我知道这是否会解决。

答案 4 :(得分:0)

下面,

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

您指定了错误的JSTL taglib网址。这个适用于JSTL 1.0。在JSTL 1.1之后,路径中需要/jsp。另请参阅JSTL 1.1 tag library documentation

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

关于代码(以及回复所有那些抱怨使用${}的重复答案),#{}语法只能在您定位Servlet 2.5时在JSP内部工作2.1符合Servlet 2.5规范的web.xml兼容容器。 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>

另见:

答案 5 :(得分:0)

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

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

 <%@ 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" %>