3

複数の 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このコードを抽象化し、html で手動で定義するのではなくプログラムで nav 要素を選択する最善の方法は何ですか?

4

1 に答える 1

3

<jsp:include>再利用可能な JSP コード フラグメントを含めるために使用します。

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

JSTL / ELを使用して、HTML 出力を動的に制御します。

<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.
}

a を使用して、ServletContextListenerアプリケーション全体のデータをプリロードします。

@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);
    }

    // ...
}
于 2011-06-17T15:09:12.170 に答える