【问题标题】:How to display array of arrays in JSP data retrieved from servlet . The record displays nothing while trying to access from JSP如何在从 servlet 检索的 JSP 数据中显示数组数组。尝试从 JSP 访问时,记录不显示任何内容
【发布时间】:2022-01-04 04:21:29
【问题描述】:

想要在 JSP 页面中显示以下数据模式。 {record.id} 显示没有任何人可以帮助解决此问题。数据是从 servlet 的 mysql 数据库中获取并传递给 JSP。

JSP 代码

<table>
    <tr>
        <c:forEach var="record" items="${STUDENT_LIST}">  
          <td>${record.id}</td>
          <td>${record.sfirstName}</td>
          <td>${record.sgender}</td>
       </c:forEach>
   </tr>
</table>

数据格式

[getStudentDetails[id=1, sfirstName=Tom,  sgender=M],
[getStudentDetails[id=2,sfirstName=jerry,  sgender=M],
[getStudentDetails[id=3, sfirstName=scooby, sgender=M]]

Servlet 代码

学生 = studentDetailsDB.getStudents();

     request.setAttribute("STUDENT_LIST", students);
         
    request.getRequestDispatcher("studentDetailsView.jsp").forward(request, response);

学生班 公共类 getStudentDetails {

private int    id;
private String sfirstName;
private String sgender;


public getStudentDetails(int id, String sfirstName, String sgender) {
    this.id = id;
    this.sfirstName = sfirstName;
    this.sgender = sgender;
}

public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}

public String getSfirstName() {
    return sfirstName;
}

public void setSfirstName(String sfirstName) {
    this.sfirstName = sfirstName;
}


public String getSgender() {
    return sgender;
}

public void setSgender(String sgender) {
    this.sgender = sgender;
}


@Override
public String toString() {
    return "getStudentDetails[" + "id=" + id + ", sfirstName=" + sfirstName + ", sgender=" + sgender + ']';
}

}

DBO 而 (rs.next()) {

            // retrieve data from result set row
            
              
             int      id           =  rs.getInt("studentId");
             String   sfirstName   =  rs.getString("sFirstName");
             String   sgender      =  rs.getString("gender");
             
          
            getStudentDetails tstudent = new getStudentDetails(id ,sfirstName,sgender); 
        
            student.add(tstudent);       
            
            }

【问题讨论】:

  • record.slastNamesfirstName=scooby ?
  • 在您的 servlet 中,您是否将此数据添加到您的请求或会话中?
  • 学生 = studentDetailsDB.getStudents(); request.setAttribute("STUDENT_LIST", 学生); request.getRequestDispatcher("studentDetailsView.jsp").forward(request, response);
  • 你确定students = studentDetailsDB.getStudents();不为空吗?
  • 不,它不是空的 ${STUDENT_LIST} 具有问题中提到的格式的详细信息。当我执行 foreach 循环并尝试使用问题中提到的 {record.id} 获取数据时,我没有得到任何输出

标签: java jsp arraylist


【解决方案1】:

在您提供的 JSP 中,您没有包含 taglib 指令

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

对于c:forEach

没有这个,你什么都得不到。

【讨论】:

  • 添加后出现以下错误,
  • Catchorg.apache.jasper.JasperException 内部:绝对 uri:[java.sun.com/jsp/jstl/core] 无法在 web.xml 或随此应用程序部署的 jar 文件中解析
  • 我在 maven 存储库中有 jar 文件我尝试在依赖项中添加它,但它仍然没有工作 javax.servlet.jsp.jstljavaee-web -api7​​.0提供
  • 在 xml 中添加了这个并且它工作了
  • javax.servletjstl1.2runtimetaglibsstandard1.1.2runtime