補講:JSTLをつかった単純な繰り返し

例えば、JavaSEで「Hello Word」という文字列を6回繰り返し出力する際には次のように書きました。

for (int i = 0; i < 6; i++) {
     System.out.println("Hello World");
}

同様の処理をJSPでは <c:forEach> を使って以下のように書きます。

<c:forEach begin="1" end="6" step="1"> 
    Hello World<br> 
</c:forEach>

【begin】、【end】、【step】の意味は英語そのままですから特に解説もいらないと思います。

以下は <c:forEach> を使った単純な繰り返しのサンプル集です。

<%@page contentType="text/html" pageEncoding="UTF-8"%> <!-- ページのコンテンツタイプとエンコーディングを指定 -->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!-- JSTLのコアタグライブラリをインポート -->
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <!-- ページの文字エンコーディングを設定 -->
        <title>forEach1</title> 
    </head>
    <body>
        <c:forEach begin="1" end="6" step="1"> <!-- 1から6までの繰り返しを設定 -->
            Hello World<br> <!-- 繰り返しごとに「Hello World」を表示 -->
        </c:forEach>
        <hr>
        <c:forEach begin="1" end="6" var="i"> <!-- 1から6までの繰り返しを設定し、変数iを使用 -->
        <h${7-i}>Hello World</h${i}> <!-- 変数iを使用してヘッダータグのレベルを変更 -->
        </c:forEach>
        <hr>
        <c:forEach begin="1" end="6" var="i"> <!-- 1から6までの繰り返しを設定し、変数iを使用 -->
            <c:out value="${i}"/><br> <!-- 変数iの値を出力 -->
        </c:forEach>
        <hr>
        <c:forEach begin="1" end="10" step="2" var="i"> <!-- 1から10まで2ステップで繰り返し、変数iを使用 -->
            <c:out value="${i}"/><br> <!-- 変数iの値を出力 -->
        </c:forEach>
        <hr>
        <c:forEach begin="1" end="9" var="i"> <!-- 1から9までの繰り返しを設定し、変数iを使用 -->
            <c:forEach begin="1" end="9" var="j"> <!-- ネストされた繰り返し、1から9までの変数jを使用 -->
                <c:out value="${i * j}"/> <!-- 変数iとjの積を出力 -->
            </c:forEach>
            <br>
        </c:forEach>
        <hr>
        数量:<select name="num"> <!-- ドロップダウンメニューを作成 -->
            <c:forEach begin="1" end="6" var="i"> <!-- 1から6までの繰り返しを設定し、変数iを使用 -->
                <option>${i}</option> <!-- 変数iの値をオプションとして追加 -->
            </c:forEach>
        </select>
    </body>
</html>
  • step属性は省略できましたか?その場合の既定値はなんですか?
あなたの答え:
  • step属性にマイナスの数は指定できません。そこで14~16行でなされている工夫はなんですか?
あなたの答え:
  • 18~20行、22~24行の出力結果をそれぞれ予想しなさい。
あなたの答え:
  • 26~31行の出力結果を予想しなさい。
あなたの答え:
  • 33~37行の出力結果を予想しなさい。
あなたの答え:

以上、「JSTLをつかった単純な繰り返し」でした。