1

我正在尝试实现一个 JSP 应用程序,我需要帮助。有两个问题:

1) JSTL 标签不转换成 HTML。

2)如果我在 JSP 页面中使用纯 java 而不是 JSTL,它仍然不起作用。

我将 netbeans 7.3 与 tomcat 7 以及 Java EE 6 一起使用。我在项目中添加了 netbeans 7.3 附带的 JSTL 库(即 JSTL 1.1)。

我的 web.xml 以:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
     version="3.0">
...
</web-app>

这是一个示例代码:

public class Item {
    private int id;
    private String name;
// setters and getters follow
}


public class Controller {
    public List<Item> getAllItems() {
        // returns a list of items (size of list = 2)
    }
}

index.jsp:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <% 
           Controller controller = new Controller(); 
           List<Item> items = controller.getAllItems();
        %>
        <table>
        <c:forEach items="${items}" var="item">
            <tr>
                <td>${item.id}</td>
                <td>${item.name}</td>
            </tr>
        </c:forEach>
</table>
    </body>
</html>

1)jstl代码没有转换成html。页面的源代码如下所示:

...
<table>
<c:forEach items="" var="item">
            <tr>
                <td></td>
                <td></td>
            </tr>
  </c:forEach> 
</table>
...

我也尝试使用 ${item.getId()} 和 ${item.getName()} 但结果相同

2)如果我用 java 替换 c:forEach 如下:

    <% for (Item item : items) {%>
        <tr>
            <td><%item.getId();%></td>
            <td><%item.getName();%></td>
        </tr>
    <% } %>

我得到以下来源(回想一下 List 的大小是 2):

    ...
        <tr>
            <td></td> 
            <td></td>  
        </tr>           
        <tr>
            <td></td>
            <td></td>    
        </tr>

我究竟做错了什么?我是否正确设置了jstl?请注意,Controller 是一个普通的 java 类,而不是一个 bean。我需要把它变成豆子吗?如果是,如何?提前致谢!

4

1 回答 1

-1

检查 web.xml 中使用的 xsd 版本。在我的情况下,版本需要是 2.5,而旧版本没有在 jsp 中显示值。并且没有抛出错误。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    id="WebApp_ID" version="2.5">
于 2018-02-12T20:07:04.287 回答