Создание меню с навигационными ссылками с помощью JSTL - PullRequest
6 голосов
/ 08 мая 2011

Есть ли библиотека или лучший способ создания меню с навигационными ссылками с использованием JSTL?

У меня есть 5 ссылок, которые идут на каждой странице.Я хочу, чтобы ссылка, указывающая на текущую страницу, была "отключена".Я могу сделать это вручную, но это должно быть проблемой, с которой люди сталкивались раньше.Я не удивлюсь, если есть taglib, который обрабатывает это, но я не знаю об этом.

1 Ответ

8 голосов
/ 08 мая 2011

Вы можете позволить JSTL / EL генерировать HTML / CSS условно на основании URL-адреса запрашиваемой страницы JSP.Вы можете получить его по ${pageContext.request.servletPath} в EL.Предполагая, что у вас есть ссылки в некоторых Map<String, String> в области приложения:

<ul id="menu">
    <c:forEach items="${menu}" var="item">
        <li>
            <c:choose>
                <c:when test="${pageContext.request.servletPath == item.value}">
                    <b>${item.key}</b>
                </c:when>
                <c:otherwise>
                    <a href="${item.value}">${item.key}</a>
                </c:otherwise>
            </c:choose>
        </li>
    </c:forEach>
</ul>

Или когда вы только после класса CSS

<ul id="menu">
    <c:forEach items="${menu}" var="item">
        <li><a href="${item.value}" class="${pageContext.request.servletPath == item.value ? 'active' : 'none'}">${item.key}</a></li>
    </c:forEach>
</ul>

Вы можете использовать <jsp:include>повторно использовать контент на страницах JSP.Поместите вышеперечисленное в отдельный файл menu.jsp и включите его следующим образом:

<jsp:include page="/WEB-INF/menu.jsp" />

Страница помещена в папку WEB-INF для предотвращения прямого доступа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...