传递JSP参数,然后检查它们是否存在

时间:2015-01-06 15:02:01

标签: java jsp parameters conditional parameter-passing

我有一种情况,我正在使用多个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:&nbsp;<span><%= request.getParameter("title") %></span></li>
</c:if>
<c:if test="${!empty param.instructor}">
     <li class="instructor">Instructor:&nbsp;<span><%= request.getParameter("instructor") %></span></li>
</c:if>
<c:if test="${!empty param.artist}">
     <li class="instructor">Artist:&nbsp;<span><%= request.getParameter("artist") %></span></li>
</c:if>
<c:if test="${!empty param.album}">
     <li class="instructor">Album:&nbsp;<span><%= request.getParameter("album") %></span></li>
</c:if>
</ul>

当前结果:

  • 标题:产品名称
  • 讲师:一些Donkus
  • 艺术家:
  • 专辑:

我可以正确填充include.jsp,但即使 ARTIST ALBUM 为空,其列表项仍会显示。我在这里做错了什么?

1 个答案:

答案 0 :(得分:2)

您的include.jsp文件中有这些内容吗?如果是,则将其添加到文件顶部:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

jsp前缀是预定义的,但JSTL的c前缀不是。

您的服务器可能无法将<c:if>识别为服务器端标记(因为缺少taglib指令),因此不会对其进行评估。

因此,它们“按原样”发送到浏览器。浏览器本身将忽略它们(因为它们不是HTML),但渲染其他所有内容,包括艺术家和专辑的<li>