JSP/JSTL不工作
我正在尝试实现一个JSP应用程序,我需要帮助。有两个问题:JSP/JSTL不工作,jsp,jstl,Jsp,Jstl,我正在尝试实现一个JSP应用程序,我需要帮助。有两个问题: ... <tr> <td></td> <td></td> </tr> <tr> <td></td> <td></td>
...
<tr>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
</tr>
1 JSTL标记未转换为HTML
...
<tr>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
</tr>
2如果我在JSP页面中使用纯java而不是JSTL,它仍然不起作用
...
<tr>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
</tr>
我将netbeans 7.3与Tomcat7以及JavaEE6一起使用。我向项目中添加了netbeans 7.3附带的JSTL库,即JSTL 1.1
...
<tr>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
</tr>
My 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>
...
<tr>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
</tr>
下面是一个示例代码:
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)
}
}
...
<tr>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
</tr>
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>
...
<tr>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
</tr>
1 jstl代码未转换为html。页面的来源如下所示:
...
<table>
<c:forEach items="" var="item">
<tr>
<td></td>
<td></td>
</tr>
</c:forEach>
</table>
...
...
<tr>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
</tr>
我还尝试使用${item.getId}和${item.getName},但结果相同
...
<tr>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
</tr>
2如果我用java替换c:forEach,如下所示:
<% for (Item item : items) {%>
<tr>
<td><%item.getId();%></td>
<td><%item.getName();%></td>
</tr>
<% } %>
...
<tr>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
</tr>
我得到以下消息来源:回想一下列表的大小是2:
...
<tr>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
</tr>
我做错了什么?我是否正确设置了jstl?请注意,控制器是一个普通的java类,而不是bean。我需要把它做成豆子吗?如果是,如何进行?
提前谢谢 检查web.xml中使用的xsd版本。在我的例子中,版本需要是2.5,而旧版本没有在jsp中显示值。没有抛出错误
...
<tr>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
</tr>
<?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">
这些症状表明JSTL根本不存在于webapp的运行时类路径中。我不做Netbeans,所以我不知道如何让它正确地完成它的工作,但是您可以通过让它将项目导出为WAR文件,然后使用ZIP工具将其解压缩,然后检查/WEB-INF/lib中是否存在JSTL JAR来验证这一点。如果不是,那么您就已经找到了问题的根本原因。另外,JSP EL无法访问JSP中由scriptlet定义的局部变量。它只访问页面、请求、会话或应用程序属性。控制器应该是一个servlet,在JSP之前调用。不是由JSP创建和调用的。@BalusC我提取了.war文件。jstl.jar和standard.jar都包含在WEB-INF/lib中。@JBNizet您能告诉我更多的细节吗?请参阅。基本上,请求会发送到servlet。servlet将JavaBean存储在请求属性中,然后使用请求调度器转发到JSP。JSP显示存储在请求属性中的数据。这是所有MVC框架背后的基本架构,如SpringMVC、Stripes、Struts等。