我在多个 JSP 文件中有这个导航代码:
<ul id="nav">
<li ><a href="/home">Home</a></li>
<li class="active" ><a href="/bills">Bills</a></li>
<li ><a href="/invoices">Invoices</a></li>
</ul>
抽象出这段代码并使active
nav 元素的选择以编程方式而不是在 html 中手动定义的最佳方式是什么?
我在多个 JSP 文件中有这个导航代码:
<ul id="nav">
<li ><a href="/home">Home</a></li>
<li class="active" ><a href="/bills">Bills</a></li>
<li ><a href="/invoices">Invoices</a></li>
</ul>
抽象出这段代码并使active
nav 元素的选择以编程方式而不是在 html 中手动定义的最佳方式是什么?
用于<jsp:include>
包含可重用的 JSP 代码片段。
<jsp:include page="/WEB-INF/nav.jsp" />
<ul id="nav">
<c:forEach items="${pages}" var="page">
<c:set var="active" value="${fn:endsWith(pageContext.request.requestURI, page.url)}" />
<li class="${active ? 'active' : 'none'}"><a href="${page.url}">${page.name}</a></li>
</c:forEach>
</ul>
使用Javabean类来表示可以在所有代码层中使用的模型。
public class Page {
private String url;
private String name;
// Add/generate getters, setters and other boilerplate.
}
使用 aServletContextListener
预加载应用程序范围的数据。
@WebListener
public class Config implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent event) {
List<Page> pages = new ArrayList<Page>();
pages.add(new Page("/home", "Home"));
pages.add(new Page("/bills", "Bills"));
// ...
event.getServletContext().setAttribute("pages", pages);
}
// ...
}