bookShop项目 - 错误总结
-
在form表单中,action必须写成th:action
action必须写成th:action,这样才会转到/user.do对应的controller上 <form th:action = "@{/user.do}"> 如果没有thymeleaf的渲染,默认跳到的是“http://localhost:8080/bookshop/user.do”这个静态页面,但是这个静态页面是完全不存在的
-
form表单中的name=" xxx " 中的名称
一定要和数据库中的字段名、pojo类中的属性名、controller对应方法中的参数名,sql语句中的参数名全部保持一致。
-
controller中的返回值
return “ redirect : user.do ” 跳转到对应的controller中
return " user/login " 组装user文件路径下的login.html文件
-
th : if 和 th : unless 所在的两个平行标签之间不能存在其它标签
-
head 头文件中加载< script lang=“JavaScript”> 时,一定要加上结束标签 < /script>,否则整个html文件都加载不出来
-
最最容易发生的错误,空指针异常 (必须掌握)
String sql = "select * from t_cart_item where id = ?"; List<CartItem> cartItemList = super.commRetrieve(conn,sql,user.get(id));
查询后返回的cartItemList = null。
原因:CartItem类中,有自定义属性Book book和User userBean,所以在Book和User类中必须分别创建一个带有id参数的构造器,这样在使用通用方法时,返回到BaseDAO中通过反射给CartItem每个属性赋值时,才可以赋值成功。
-
在购物车页面cart.html上,涉及到“book”引用出来的数据就为空 (必须掌握)
原因是,在service层通过cartItemDAO的查询功能,直接从数据表t-cart_item中获取的book字段只有id一种值,但是t_cart_item对应的CartItem类中的属性book的类型时Book,而Book中有多个属性,故需要在service中给book属性重新全方位赋值。
-
pojo类中的属性属性 ≥ 对应数据表中的字段数量
-
sql语句
sql语句中的赋值要注意字段类型是int,但pojo类中的属性是自建类,的字段类,赋值一定要有getId( )
-
数字转变为字符串,只需要加上一个空格即可
-
thymeleaf与Axios的一点区别
thymeleaf:会自动解析pojo类中的get方法
Axios:进行的是前后端分离,value表达式只接收从服务端响应回来的数据,不会解析pojo类中的get方法