覚書。レガシー。
1.1.2 の場合
1.2.1 の場合 (Tomcatサイトから入手する場合)
- Apache Tomcat - Apache Taglibs Downloads
- taglibs-standard-impl-1.2.1.jar … rt.core等 (OutTag, ForEachTag等)
- taglibs-standard-jstlel-1.2.1.jar … el.core等 (OutTag, ForEachTag等)
- taglibs-standard-spec-1.2.1.jar … jstl.core等 (LoopTag等)
↓
taglibs-standard-impl-1.2.1.jar, taglibs-standard-jstlel-1.2.1.jar, taglibs-standard-spec-1.2.1.jar をプロジェクト内の WEB-INF/lib フォルダにコピー
1.2.1 の場合 (JSTLサイトから入手する場合)
- JSP Standard Tag Library -
↓
javax.servlet.jsp.jstl-1.2.1.jar, javax.servlet.jsp.jstl-api-1.2.1.jar をプロジェクト内の WEB-INF/lib フォルダにコピー
利用
値の設定
Servlet 側コード例。
@WebServlet("/hello") public class HelloServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{ // 値の設定 String hoge = "XX<a>YY"; req.setAttribute("hoge", hoge); // JSP表示 req.getRequestDispatcher("/WEB-INF/jsp/hello.jsp").forward(req, resp); } }
値の表示
jsp 側コード例。taglib のタグを入れておく必要がある。
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <b> <c:out value="${hoge}"/> </b>
結果
ちゃんとエスケープされました。
その他構文メモ
<c:forEach var="item" items="${list}" varStatus="status"> <c:out value="${item}" /> </c:forEach> <c:if test="${cnt >= 10}" > XYZ </c:if> <c:choose> <c:when test="${cnt == 1}">One</c:when> <c:when test="${cnt == 2}">Two</c:when> <c:otherwise>Other</c:otherwise> </c:choose>