【问题标题】:Java JSP/JSTL Loop through objects 2d boolean arrayJava JSP/JSTL 循环遍历对象 2d 布尔数组
【发布时间】:2019-08-07 17:21:09
【问题描述】:

问题:

我想遍历“座位”类的数组。

“座位”代码:

public class Seating {
private int nRow, nCol;
private boolean[][] seats;

public Seating () {
    nRow = 8;
    nCol = 8;
    seats = new boolean[nRow][nCol];
}

“Seating”的一个实例由如下所示的“EventBooking”类创建。

PrintWriter out = response.getWriter();
    seats = new Seating(8,8);

    seats.setSeatStatus(0,1);
    seats.setSeatStatus(1,1);

    request.setAttribute("seats", seats.seats);
    RequestDispatcher req = request.getRequestDispatcher("/index.jsp");
    req.forward(request,response);

以及应该循环这些值的 .jsp

<c:forEach var = "row" items = "${seats}">
    <c:forEach var = "col" items = "${row}">
        <c:out value = "${seats}"/>
    </c:forEach>
</c:forEach>

我正在尝试发送我的 "Seating" 对象到 .jsp。然后,.jsp 将遍历 Seating 的 2D 数组的值。将打印数组的每个值。

错误:

org.apache.jasper.JasperException: An exception occurred processing [/index.jsp] at line [8]

还有第 8 行。

8:  <c:forEach var = "row" items = "${seats}">

感谢任何帮助。

编辑 完整的“座位”代码

public class Seating {
private int nRow, nCol;
public boolean[][] seats;

public Seating () {
    nRow = 8;
    nCol = 8;
    seats = new boolean[nRow][nCol];
}

public Seating (int row, int col) {
    nRow = row;
    nCol = col;
    seats = new boolean[row][col];
}

public boolean seatStatus (int row, int col) {
    return seats[row][col];
}

public void setSeatStatus (int row, int col) {
    if (seats[row][col] == false) {
        seats[row][col] = true;
    }
    else if (seats[row][col] == true) {
        seats[row][col] = false;
    }
    //else
        //Error
}

public int getRowLength () {
    return nRow;
}

public int getColLength () {
    return nCol;
}

【问题讨论】:

  • 我注意到一些语法错误:seats = new Seating(8,8); 不是实例化类的有效方法;它应该是seats = new Seating。另外,setSeatStatus() 是否在 Seating 类中定义?最后,index.jsp 中的第 8 行?
  • @C.Peck 忽略语法错误,我只包含相关代码以使其更易于阅读。代码编译。第 8 行显示在原始帖子的底部。
  • 我仍然认为你不能像你一样实例化Seating。 Java 类不接受参数。除非您使用 seats = new Seating; 实例化它,否则它不会编译
  • 正如我所说,它确实可以编译。第二个构造函数具有适当的参数。它已被提交,因为它与提出的问题并不完全相关,因此没有真正需要展示它。
  • 抱歉,除非我大大高估了我对 Java 的了解,否则代码是无法编译的。除了 Seating 类的不正确实例化之外,public Seating () 不是有效的方法签名,因为您没有提供返回类型(它应该是 void)并且必须删除 Seating 之后的空格。只是好奇你所说的“第二个构造函数”是什么?

标签: java arrays jsp servlets jstl


【解决方案1】:

请检查并更正最里面的循环输出 - Two dimensional arraylist with c:foreach jstl tag

此外,您可以通过诸如 a[1][0] 之类的索引打印二维数组,以查看其中是否存在任何值。

【讨论】:

    猜你喜欢
    • 2015-11-08
    • 1970-01-01
    • 1970-01-01
    • 2016-09-07
    • 1970-01-01
    • 1970-01-01
    • 2016-07-28
    • 2017-01-29
    • 2015-10-15
    相关资源
    最近更新 更多