【问题标题】:Can't display attribute property from request on web page无法在网页上显示来自请求的属性属性
【发布时间】:2016-07-13 16:56:53
【问题描述】:

我正在尝试从数据库中获取数据并将它们显示在网页上。

我期望有实体数据的表格,但有这个:

我还有一些课:

Department:

package entity;

import javax.persistence.*;
import java.io.Serializable;


@Entity
@Table(name = "DEPT")
@NamedQuery(name = "Department.getAll", 
query = "select d from Department    d")
public class Department implements Serializable {
@Id
@Column(name = "DEPTNO")
private int DEPTNO;

@Column(name = "DNAME")
private String dname;

@Column(name = "LOC")
private String loc;

public Department() {
}

public int getDEPTNO() {
    return DEPTNO;
}

public void setDEPTNO(int DEPTNO) {
    this.DEPTNO = DEPTNO;
}

public String getDname() {
    return dname;
}

public void setDname(String dname) {
    this.dname = dname;
}

public String getLoc() {
    return loc;
}

public void setLoc(String loc) {
    this.loc = loc;
}

@Override
public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;

    Department that = (Department) o;

    if (DEPTNO != that.DEPTNO) return false;
    if (!dname.equals(that.dname)) return false;
    return loc.equals(that.loc);

}

@Override
public int hashCode() {
    int result = DEPTNO;
    result = 31 * result + dname.hashCode();
    result = 31 * result + loc.hashCode();
    return result;
}

@Override
public String toString() {
    return "Department{" +
            "DEPTNO=" + DEPTNO +
            ", dname='" + dname + '\'' +
            ", loc='" + loc + '\'' +
            '}';
}
}

DepartmentService:

public class DepartmentService {

public EntityManager entityManager = Persistence.createEntityManagerFactory("persistenceUnit").createEntityManager();

public List<Department> getAll(){

    TypedQuery<Department> typedQuery = entityManager.createNamedQuery("Department.getAll", Department.class);
    return typedQuery.getResultList();
}
}

ShowAllServlet:

@WebServlet(name = "ShowAllServlet", urlPatterns = "/showAll")
public class ShowAllServlet extends HttpServlet {

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

}

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    DepartmentService departmentService = new DepartmentService();
    req.setAttribute("result", departmentService.getAll());
}
}

index.jsp:

<%@ page import="entity.Department" %>
<%@ page import="java.util.ArrayList" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<body>
<div class="main">
<jsp:include page="/showAll"></jsp:include>
<table id="mainTable">
    <tr>
        <th>DEPTNO</th>
        <th>DNAME</th>
        <th>LOC</th>
    </tr>
    <%--@elvariable id="result" type="java.util.List"--%>
    <c:forEach items="${result}" var="obj">
        <tr>
            <td>
                <c:out value="${obj.DEPTNO}"></c:out>
            </td>
            <td>
                <c:out value="${obj.dname}"></c:out>
            </td>
            <td>
                <c:out value="${obj.loc}"></c:out>
            </td>
        </tr>
    </c:forEach>

</table>
</div>
</body>
</html>

我查过了,请求有属性"result"

【问题讨论】:

    标签: java jsp jstl el


    【解决方案1】:

    首先尝试从&lt;c:out&gt;标签中取出变量,你不需要它们,其次你需要做更多的导入:

    <%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    <%@page import="java.lang.String"%>
    <%@page import="javax.portlet.PortletSession"%>
    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    

    【讨论】:

    • 我不明白,哪些变量?我添加了额外的导入,但得到了相同的结果。
    【解决方案2】:

    看起来您使用的是非常旧的 JSP 版本。就您在 servlet 上使用注释而言,您应该至少使用 Web 服务器上应该可用的 Servlet 3.0 库。

    如果您有web.xml,请检查标头标记中的版本以获取正确的 Servlet 版本,该版本至少应为 2.4。如果您有疑问为什么要使用它,因为此版本及更高版本默认使用 isELIgnored="false" 启用 EL。如果您需要在所有页面上忽略 EL,但在该页面上使用 EL 除外,您可以修改该页面。

    <%@ page isELIgnored ="false" %>     
    

    如果您的 Web 应用程序提供了任何已实现 servlet 但版本较低的库,您应该删除它们。

    如果您使用pom.xml,请指定库的范围,即在服务器上以provided 的形式提供。

    使用可与 Web 应用程序的 Servlet 版本一起使用的 JSTL 版本。您可以使用Can not find the tag library descriptor for “http://java.sun.com/jsp/jstl/core” 答案下载JSTL。

    【讨论】:

      猜你喜欢
      • 2013-05-01
      • 2014-06-25
      • 2015-10-01
      • 1970-01-01
      • 2019-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多