麻烦老师帮忙看一下错误出现再哪里了
来源: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方法。
参考代码如下:
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
相似问题