2012-02-26 102 views
4

我想遍歷整數的二維數組,並用<table>標記在網格中表示它們。問題在於我不允許使用任何java腳本。我知道這是下面代碼的作用,但更復雜。並且boardArray返回一個2d整型數組。那麼我將如何提取每個單元的值?數組也有預定的大小。在JSP/JSTL中使用<c:forEach>需要幫助

 <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標記,因此我想您的意思是JSP和JSTL而不是HTML。
這裏的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> 

陣列含量由兩個嵌套循環c:forEach呈現。外層循環遍歷行,對於每一行,嵌套循環遍歷給定行中的列。

上例在瀏覽器中看起來像這樣:
JSTL iteration over 2D array