jsp选择声明

时间:2011-01-21 00:55:35

标签: jsp jstl

我有一个header.jsp,我希望包含在多个页面中。标题页面中有三个链接。我正在使用css向用户指出他们在任何给定点上的页面。以下是header.html的代码:

<ul>
    <%-- Check for the activeState parameter to decide which css to use --%>
    <c:choose>
        <c:when test='${requestScope.activeState == "home"}'>
            <li><a href="index.jsp" class="active"><span>Home</span></a></li>
        </c:when>
        <c:otherwise>
            <li><a href="index.jsp"><span>Home</span></a></li>
        </c:otherwise>
    </c:choose>

    <c:choose>
        <c:when test='${requestScope.activeState == "about"}'>
            <li><a href="about.jsp" class="active"><span>About Us</span></a></li>
        </c:when>
        <c:otherwise>
            <li><a href="about.jsp"><span>About Us</span></a></li>
        </c:otherwise>
    </c:choose>

    <c:choose>
        <c:when test='${requestScope.activeState == "contact"}'>
            <li><a href="contact.jsp" class="active"><span>Contact Us</span></a></li>
        </c:when>
        <c:otherwise>
            <li><a href="contact.jsp"><span>Contact Us</span></a></li>
        </c:otherwise>
    </c:choose>
</ul>

这是index.jsp文件调用的内容:

<jsp:include page="header.jsp">
    <jsp:param value="home" name="activeState"/>
</jsp:include>

这不起作用。 index.html页面中显示了六个链接。三个css和三个没有CSS。以下是index.html页面的源代码:

<c:choose>
    <c:when test='false'>
        <li><a href="index.jsp" class="active"><span>Home</span></a></li>
    </c:when>
    <c:otherwise>
        <li><a href="index.jsp"><span>Home</span></a></li>
    </c:otherwise>
</c:choose>

<c:choose>
    <c:when test='false'>
        <li><a href="about.jsp" class="active"><span>About Us</span></a></li>
    </c:when>
    <c:otherwise>
        <li><a href="about.jsp"><span>About Us</span></a></li>
    </c:otherwise>
</c:choose>

<c:choose>
    <c:when test='false'>
        <li><a href="contact.jsp" class="active"><span>Contact Us</span></a></li>
    </c:when>
    <c:otherwise>
        <li><a href="contact.jsp"><span>Contact Us</span></a></li>
    </c:otherwise>
</c:choose>

我还尝试使用param.activeState代替requestScope.activeState来获取activeState参数。行为没有变化。有人可以解释发生了什么吗?

1 个答案:

答案 0 :(得分:2)

如果您在HTML源代码中看到未解析的JSTL标记,则表示JSTL标记库未在JSP中声明,如下所示

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

或者根本没有安装JSTL。按照我们JSTL wiki page

中的说明下载并安装它