麻烦老师帮忙看一下错误出现再哪里了

来源:5-2 项目作业

散落满天的回忆

2020-05-21 21:26:02

org.apache.jasper.JasperException: 在 [57] 行处理 [/WEB-INF/page/admin/book.jsp] 时发生异常


54:             <c:forEach items="${bookList}" var="list">

55:                 <tr>

56:                     <td>${list.name}</td>

57:                     <td>${list.category.name}</td>

58:                     <td>${list.createTime}</td>

59: 

60:                     <td>${list.updateTime}</td>



Stacktrace:

at org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:617)

at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:514)

at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386)

at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:728)

at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:470)

at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:395)

at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:316)

at com.imooc.book.controller.BookController.selectById(BookController.java:152)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

at com.imooc.book.controller.GlobalController.service(GlobalController.java:51)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at com.imooc.book.global.EncodingFilter.doFilter(EncodingFilter.java:24)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:528)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)

at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:678)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)

at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:798)

at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)

at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:810)

at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500)

at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

at java.lang.Thread.run(Thread.java:745)

Caused by: javax.el.PropertyNotFoundException: 类型[com.imooc.book.entity.Book]上找不到属性[category]

at javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:260)

at javax.el.BeanELResolver$BeanProperties.access$300(BeanELResolver.java:212)

at javax.el.BeanELResolver.property(BeanELResolver.java:333)

at javax.el.BeanELResolver.getValue(BeanELResolver.java:92)

at org.apache.jasper.el.JasperELResolver.getValue(JasperELResolver.java:110)

at org.apache.el.parser.AstValue.getValue(AstValue.java:169)

at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:190)

at org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:944)

at org.apache.jsp.WEB_002dINF.page.admin.book_jsp._jspx_meth_c_005fforEach_005f1(book_jsp.java:280)

at org.apache.jsp.WEB_002dINF.page.admin.book_jsp._jspService(book_jsp.java:166)

at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)

at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:476)

... 43 more

<%--
 Created by IntelliJ IDEA.
 User: 86156
 Date: 2020/5/16
 Time: 21:46
 To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
   <meta charset="UTF-8">
   <title>图书列表</title>
   <link rel="stylesheet" href="/css/index.css">
   <link rel="stylesheet" href="/css/bootstrap.min.css">
</head>

<body>
<header>
   <div class="container">
       <c:forEach items="${categoryList}" var="list">
           <nav>
               <a href="/admin/Book/selectById.do?id=${list.id}", >${list.name}</a>
           </nav>
       </c:forEach>

       <nav>
           <a href="/admin/Category/list.do" >分类</a>
       </nav>

   </div>
</header>
<section class="banner">
   <div class="container">
       <div>
           <h1>图书</h1>
           <p>图书列表</p>
       </div>
   </div>
</section>
<section class="main">
   <div class="container">
       <table class="table table-striped">
           <thead>
           <tr>
               <th>名称</th>
               <th>分类</th>
               <th>创建时间</th>
               <th>最后修改时间</th>
           </tr>
           </thead>
           <tbody>
           <c:forEach items="${bookList}" var="list">
               <tr>
                   <td>${list.name}</td>
                   <td>${list.category.name}</td>
                   <td>${list.createTime}</td>

                   <td>${list.updateTime}</td>


               </tr>
           </c:forEach>
           </tbody>
       </table>
   </div>
</section>
<section class="page">
   <div class="container">
       <div id="fatie">
           <a href="/admin/Book/toAdd.do"><button>新建</button></a>
       </div>
   </div>
</section>
<footer>
   copy@慕课网
</footer>
</body>
</html>
package com.imooc.book.entity;

import java.util.Date;

public class Book {
   /**
    * 图书实体类
    */
   private int id;//图书id
   private int categoryId;//图书分类id
   private String name;//图书名称
   private int level;//星级
   private int price;//价格
   private String imgPath;//图书图片的存储路径
   private Date createTime;//创建的时间
   private Date updateTime;//修改的时间
   private Category category;//图书所属分类对象
   public int getId() {
       return id;
   }

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

   public int getCategoryId() {
       return categoryId;
   }

   public void setCategoryId(int categoryId) {
       this.categoryId = categoryId;
   }

   public String getName() {
       return name;
   }

   public void setName(String name) {
       this.name = name;
   }

   public int getLevel() {
       return level;
   }

   public void setLevel(int level) {
       this.level = level;
   }

   public int getPrice() {
       return price;
   }

   public void setPrice(int price) {
       this.price = price;
   }

   public String getImgPath() {
       return imgPath;
   }

   public void setImgTath(String imgPath) {
       this.imgPath = imgPath;
   }

   public Date getCreateTime() {
       return createTime;
   }

   public void setCreateTime(Date createTime) {
       this.createTime = createTime;
   }

   public Date getUpdateTime() {
       return updateTime;
   }

   public void setUpdateTime(Date updateTime) {
       this.updateTime = updateTime;
   }

   @Override
   public String toString() {
       return "book{" +
               "id=" + id +
               ", category_id=" + categoryId +
               ", name='" + name + '\'' +
               ", level=" + level +
               ", price=" + price +
               ", img_path='" + imgPath + '\'' +
               ", create_time=" + createTime +
               ", update_time=" + updateTime +
               '}';
   }
}
package com.imooc.book.dao;

import com.imooc.book.entity.Book;
import com.imooc.book.entity.Category;
import org.apache.ibatis.annotations.*;

import java.util.List;

public interface BookDao {
   @Insert("<script>"
           +"insert into book(id,category_id,name,level,price,img_path,create_time,update_time) values"+
           "<foreach collection='list' item='list' separator=','>" +
           "(null,#{list.categoryId},#{list.name},#{list.level},#{list.price},#{list.imgPath},#{list.createTime},#{list.updateTime})"+
           "</foreach>"+
           "</script>")
   @Options(useGeneratedKeys = true,keyProperty = "id")
   void batchInsert(List<Book> list);//批量添加商品
   @Delete("delete from book where id=#{id}")
   void delete(int id);
   @Select("select b.*,ca.name as cname from book as b left join category as ca on b.category_id=ca.id order by id desc")
   @Results(id="all",value = {
           @Result(column = "id",property = "id",id = true),
           @Result(column = "category_id",property = "categoryId"),
           @Result(column = "name",property = "name"),
           @Result(column = "level",property = "price"),
           @Result(column = "price",property = "price"),
           @Result(column = "img_path",property = "imgPath"),
           @Result(column ="create_time",property = "createTime"),
           @Result(column = "update_time",property = "updateTime"),
           @Result(column = "cname",property = "category.name")
   })
   List<Book> select();//查询所有图书
   @Select("select b.*,ca.name as cname from book as b left join category as ca on b.category_id=ca.id where b.category_id=#{id}")
   @ResultMap("all")
   List<Book> selectByid(int id);//根据图书分类id查询图书
}

写回答

1回答

好帮手慕阿慧

2020-05-22

同学你好,报错信息中说在Book类中找不到category属性,也就是说Book方法中没有getCategory方法。同学可以在Book类中生成category属性的get,set方法。

参考代码如下:

http://img.mukewang.com/climg/5ec73def09744cef04150457.jpg

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

0

0 学习 · 8016 问题

查看课程