美文网首页
springMVC(四)pojo类型数据绑定和回显出现的问题

springMVC(四)pojo类型数据绑定和回显出现的问题

作者: 探索的影子 | 来源:发表于2018-08-20 22:38 被阅读0次

看视频看着挺简单的,但是实现的时候,老是出现问题。
最开始url问题

错误一

jsp代码:

<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2018/8/20
  Time: 20:36
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<html>
<head>
    <title>综合学院条件</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/faculty/selectFacultiesByName.action" method="get">
    <label>查询条件</label><<br/>
    <label>模糊查询名字:</label><input type="text" name="facultyCustom.facultyName">
    <input type="submit">
</form>
</body>
</html>

错误截图:


image.png

错误原因:
jsp默认关闭el的识别
解决方法:
在jsp头文件上加入

<%@ page isELIgnored="false" %>

错误二

描述:数据回显异常

代码:

    <c:forEach  items="${faculties}" var="item">
        Item <c:out value="${item.facultyName}+233"/><p>
    </c:forEach>

实现效果:


image.png

测试步骤:
测试数据源是否异常:
将查找到的list进行控制台的输出发现,虽然获取到了对象,但是值确实空的。说明mybatis映射错误,发现映射存在问题。

DEBUG [http-apr-8080-exec-2] - ==>  Preparing: SELECT * from faculty where faculty_name like '%默认%' 
DEBUG [http-apr-8080-exec-2] - ==> Parameters: 
DEBUG [http-apr-8080-exec-2] - <==      Total: 22
DEBUG [http-apr-8080-exec-2] - Releasing transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@9f48289]
DEBUG [http-apr-8080-exec-2] - Transaction synchronization deregistering SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@9f48289]
DEBUG [http-apr-8080-exec-2] - Transaction synchronization closing SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@9f48289]
DEBUG [http-apr-8080-exec-2] - Returning JDBC Connection to DataSource
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null

更正后的代码:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.pesystem.mapper.FacultyCustomMapper">
    <resultMap id="facultyCustomMap" type="com.pesystem.vo.FacultyCustom"
               extends="com.pesystem.mapper.FacultyMapper.BaseResultMap"/>
    <select id="selectFacultiesByName" resultMap="facultyCustomMap">
        SELECT
          *
        from faculty where
        faculty_name like '%${facultyCustom.facultyName}%'
    </select>
</mapper>

错误部分代码原因:
原来是自己在设置结果映射的时候,用resultType直接映射。我们的代码使用逆向工程实现的。mysql遵守开发约束用下划线分割,po类属性用驼峰式。直接映射当然会出现错误。我将resultType改为自己的resultMap重新测试,没有问题了。
更正之前的代码:

<mapper namespace="com.pesystem.mapper.FacultyCustomMapper">
    <resultMap id="facultyCustomMapper" type="com.pesystem.mapper.FacultyCustomMapper" extends="com.pesystem.mapper.FacultyMapper.BaseResultMap"/>
    <select id="selectFacultiesByName" resultType="com.pesystem.vo.FacultyCustom">
        SELECT
        <include refid="com.pesystem.mapper.FacultyMapper.Base_Column_List" />
        from faculty where
        faculty_name like '%${facultyCustom.facultyName}%'
    </select>
</mapper>

测试结果如下
控制台测试:数据获取正常

DEBUG [http-apr-8080-exec-9] - ==>  Preparing: SELECT * from faculty where faculty_name like '%默认%' 
DEBUG [http-apr-8080-exec-9] - ==> Parameters: 
DEBUG [http-apr-8080-exec-9] - <==      Total: 22
DEBUG [http-apr-8080-exec-9] - Releasing transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@3c76e36d]
DEBUG [http-apr-8080-exec-9] - Transaction synchronization deregistering SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@3c76e36d]
DEBUG [http-apr-8080-exec-9] - Transaction synchronization closing SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@3c76e36d]
DEBUG [http-apr-8080-exec-9] - Returning JDBC Connection to DataSource
1默认院系
2默认院系
3默认院系
4默认院系
5默认院系
6默认院系
7默认院系
8默认院系
9默认院系
10默认院系
11默认院系
12默认院系
13默认院系
14默认院系
15默认院系
16默认院系
17默认院系
18默认院系
19默认院系
20默认院系
21默认院系
22默认院系

数据回显正常:


image.png

最近这两天开学,需要准备很多东西。看视频的时间长了,实践少了。导致的直接结果就是之前的容易忘,现在的学不进。所以还是需要时时刻刻认真对待学习。
对于错误,我们不要慌张一定要一步步测试找到原因。当然这一次最根本是因为自己单独写的mapper层没有单元测试就直接集成测试。这样有些急了,导致排错也十分不好排除。一度以为是数据回显异常。
加油~~~~

相关文章

网友评论

      本文标题:springMVC(四)pojo类型数据绑定和回显出现的问题

      本文链接:https://www.haomeiwen.com/subject/pasriftx.html