2012-02-26 4 views
4

2次元の整数配列を反復処理し、<table>タグを使用してグリッドで表現しようとしています。キャッチは、私はどのJavaスクリプトも使用できないということです。私はそれが以下のコードの効果があることは知っていますが、もっと複雑です。 boardArrayは2d整数配列を返します。では、どのようにして各セルの値を抽出しますか?配列の所定の大きさもある。<c:forEach>をJSP/JSTLで使用する際の助けが必要

 <c:forEach var="array" items="${bean.boardArray}"> 
      <tr> 
       <td>${print out contents of a row}</td> 
      </tr> 
     </c:forEach> 

答えて

10

プレーンHTMLではできません。最初の質問タイトルにHTMLを記述しましたが、javabeansタグを付けてc:forEachというタグを記述しているので、HTMLではなくJSPとJSTLを意味すると思います。
ここでは、JSP + JSTLソリューションが、より読みやすくなるように書式設定されています。 Beanコード:

package com; 

public class TransferBean { 
    private int[][] _boardArray = { 
     { 1, 2, 33, 0, 7}, 
     { 13, 11, 7, 5, 3}, 
     { 5, 3, 2, 1, 1}, 
    }; 


    public int[][] getBoardArray() { 
     return _boardArray; 
    } 

    public int getBoardArrayRowLength() { 
     if (_boardArray == null || _boardArray.length == 0 
       || _boardArray[0] == null) { 
      return 0; 
     } 

     return _boardArray[0].length; 
    } 
} 

ここでJSPファイルの内容:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 

<jsp:useBean id="bean" class="com.TransferBean" /> 

<table> 
    <thead> 
     <tr> 
     <c:forEach var="i" begin="1" end="${bean.boardArrayRowLength}"> 
      <th>Column ${i}</th> 
     </c:forEach> 
     </tr> 
    </thead> 
    <tbody> 
     <c:forEach var="row" items="${bean.boardArray}"> 
     <tr> 
      <c:forEach var="column" items="${row}"> 
       <td> 
        ${column} 
       </td> 
      </c:forEach> 
     </tr> 
     </c:forEach> 
    </tbody> 
</table> 

は、アレイ内容は、2つの入れ子c:forEachループによってレンダリングされます。外側のループが行を反復処理し、各行に対して、ネストされたループが指定された行の列を反復処理します。

上記の例は、ブラウザでは次のようになります。
JSTL iteration over 2D array