传递 JSP 参数,然后检查它们是否存在
Passing JSP Parameters, then checking if they exist
我有一种情况,我正在使用多个 JSP 包含,并且在调用这些包含的根文件中我设置了一个参数列表。但在某些情况下,并非所有参数都被使用,因此永远不会设置参数。我想创建一个条件语句来检查参数是否已设置,如果没有,则根本不显示其占位符。这是我的代码:
index.jsp
<jsp:include page="include.jsp">
<jsp:param name="title" value="Title of Product"/>
<jsp:param name="instructor" value="Some Donkus"/>
<jsp:param name="artist" value=""/>
<jsp:param name="album" value=""/>
</jsp:include>
include.jsp
<ul>
<c:if test="${!empty param.title}">
<li class="instructor">Title: <span><%= request.getParameter("title") %></span></li>
</c:if>
<c:if test="${!empty param.instructor}">
<li class="instructor">Instructor: <span><%= request.getParameter("instructor") %></span></li>
</c:if>
<c:if test="${!empty param.artist}">
<li class="instructor">Artist: <span><%= request.getParameter("artist") %></span></li>
</c:if>
<c:if test="${!empty param.album}">
<li class="instructor">Album: <span><%= request.getParameter("album") %></span></li>
</c:if>
</ul>
当前结果:
- 标题:产品标题
- 讲师: 一些 Donkus
- 艺术家:
- 专辑:
我可以让 include.jsp 正确填充,但即使 ARTIST 和 ALBUM 是空白,他们的列表项仍然出现。我在这里做错了什么?
您的 include.jsp
文件中只有这些吗?如果是,则将其添加到文件顶部:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
jsp
前缀是预定义的,但 JSTL 的 c
前缀不是。
您的服务器可能无法将 <c:if>
s 识别为服务器端标记(因为缺少 taglib
指令),因此不会评估它们。
所以它们被发送 "as is" 到浏览器。浏览器本身将忽略它们(因为它们不是 HTML)但会呈现其他所有内容,包括艺术家和专辑的 <li>
。
我有一种情况,我正在使用多个 JSP 包含,并且在调用这些包含的根文件中我设置了一个参数列表。但在某些情况下,并非所有参数都被使用,因此永远不会设置参数。我想创建一个条件语句来检查参数是否已设置,如果没有,则根本不显示其占位符。这是我的代码:
index.jsp
<jsp:include page="include.jsp">
<jsp:param name="title" value="Title of Product"/>
<jsp:param name="instructor" value="Some Donkus"/>
<jsp:param name="artist" value=""/>
<jsp:param name="album" value=""/>
</jsp:include>
include.jsp
<ul>
<c:if test="${!empty param.title}">
<li class="instructor">Title: <span><%= request.getParameter("title") %></span></li>
</c:if>
<c:if test="${!empty param.instructor}">
<li class="instructor">Instructor: <span><%= request.getParameter("instructor") %></span></li>
</c:if>
<c:if test="${!empty param.artist}">
<li class="instructor">Artist: <span><%= request.getParameter("artist") %></span></li>
</c:if>
<c:if test="${!empty param.album}">
<li class="instructor">Album: <span><%= request.getParameter("album") %></span></li>
</c:if>
</ul>
当前结果:
- 标题:产品标题
- 讲师: 一些 Donkus
- 艺术家:
- 专辑:
我可以让 include.jsp 正确填充,但即使 ARTIST 和 ALBUM 是空白,他们的列表项仍然出现。我在这里做错了什么?
您的 include.jsp
文件中只有这些吗?如果是,则将其添加到文件顶部:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
jsp
前缀是预定义的,但 JSTL 的 c
前缀不是。
您的服务器可能无法将 <c:if>
s 识别为服务器端标记(因为缺少 taglib
指令),因此不会评估它们。
所以它们被发送 "as is" 到浏览器。浏览器本身将忽略它们(因为它们不是 HTML)但会呈现其他所有内容,包括艺术家和专辑的 <li>
。