我的JSP(下面的源代码)未显示value
标记的<c:out>
属性。根据以下代码,我的${param.username}
正在被正确评估。使用请求参数?username=jeff
访问JSP页面。
对于为什么有任何想法?我觉得我在这里缺少一些简单的东西。
下面的翻译/编译后的JSP,输出和源:
prac.jsp
<html xmlns:jsp="http://java.sun.com/JSP/Page"
xmlns:c="http://java.sun.com/jsp/jstl/core">
<head><title>Practice JSP</title></head>
<body>
<h2>Practice JSP</h2>
Username: <c:out value="${param.username}" default="No username"/><br/>
</body>
</html>
输出
Practice JSP
Username:
来源(右键单击,从浏览器查看页面来源)
<html xmlns:jsp="http://java.sun.com/JSP/Page"
xmlns:c="http://java.sun.com/jsp/jstl/core">
<head><title>Practice JSP</title></head>
<body>
<h2>Practice JSP</h2>
Username: <c:out value="jeff" default="No username"/><br/>
</body>
</html>
答案 0 :(得分:6)
下面,
<html xmlns:jsp="http://java.sun.com/JSP/Page"
xmlns:c="http://java.sun.com/jsp/jstl/core">
您将taglib声明为XML命名空间,该命名空间仅适用于JSPX,而不适用于“普通的”JSP。既然你没有在问题的任何地方明确提到“JSPX”,即使不在文件扩展名中,我也认为你实际上使用的是“普通的”JSP。在这种情况下,XML命名空间不起作用。您需要通过<%@taglib%>
声明taglib。
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
请注意,我删除了没有xmlns:jsp
等效项的@taglib
,因为JSP解析器已经隐式完成了这一点。与XML命名空间相反,您无需为http://java.sun.com/JSP/Page
指定taglib。
或者,如果您确实打算使用JSPX,那么您应该将文件重命名为prac.jspx
。
答案 1 :(得分:2)
尝试使用:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
这将使jspl标签可用于您的jsp并解决您的问题。