<c:out>值属性未显示

Jef*_*ine 3 jsp jstl el

我的JSP(下面的源代码)没有显示标记的value属性<c:out>.根据以下代码,我${param.username}的评估正确.使用请求参数访问JSP页面?username=jeff.

有什么想法吗?我觉得我在这里缺少一些简单的东西.

翻译/编译后的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>
Run Code Online (Sandbox Code Playgroud)

产量

Practice JSP
Username: 
Run Code Online (Sandbox Code Playgroud)

来源(右键单击,从浏览器查看页面源)

<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>
Run Code Online (Sandbox Code Playgroud)

Bal*_*usC 6

这里,

<html xmlns:jsp="http://java.sun.com/JSP/Page"
      xmlns:c="http://java.sun.com/jsp/jstl/core">
Run Code Online (Sandbox Code Playgroud)

您将taglib声明为XML命名空间,该命名空间仅适用于JSPX,而不适用于"普通的"JSP.既然你没有在问题的任何地方明确提到"JSPX",即使不在文件扩展名中,我也认为你实际上使用的是"普通的"JSP.在这种情况下,XML命名空间不起作用.您需要声明taglib <%@taglib%>.

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
Run Code Online (Sandbox Code Playgroud)

请注意,我删除了xmlns:jsp没有@taglib等效的东西,因为它已经由JSP解析器隐式完成了.与XML命名空间相反,您无需为自己指定taglib http://java.sun.com/JSP/Page.

或者,如果您确实打算使用JSPX,那么您应该将文件重命名为prac.jspx.

也可以看看: