javax.el.PropertyNotFoundException:类型[com.ex.spring.entity.Dept]上找不到属性[dNo]

在做一个SSM框架整合项目的时候,遇到了如上的错误。
最后发现是错误是在控制器的代码部分,原代码如下:

   @RequestMapping("/get_data")
    public ModelAndView get_data(){
     
        List<Dept> list = deptService.getAll();
        ModelAndView mv=new ModelAndView();
        mv.addObject("all","list");
        mv.setViewName("success");
        return mv;
    }
<table border="1">
    <tr>
        <td>部门编号</td>
        <td>部门名</td>
        <td>地址</td>
    </tr>
    <c:forEach items="${all}" var="dept">
        <tr>
            <td>${
     dept.dno}</td>
            <td>${
     dept.dname}</td>
            <td>${
     dept.loc}</td>
        </tr>
    </c:forEach>
</table>

不知道你们发现了没有,错误在我在把查询返回的结果加入modelAndView的时候把 list 写成了 “list”
然后我把这个错误改回来就能正常运行了。

如果有小伙伴也遇到了这个错,建议排查思路如下:

一、jstl不识别
  1. 看jstl.jar有没有成功引入,识别JSTL标签的语句有没有写: <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
  2. 有没有写这行语句: <%@page pageEncoding="utf-8" isELIgnored="false"%>(有的时候需要,如果错误的话可以尝试一下是不是因为这个)。
二、jstl语法问题

比如:$ 符号有没有少,不该写的地方有没有加,等等。自己按照语法找。


            ${dept.dno}-${dept.dname}-${dept.loc}

三、属性名拼写问题

在“类型XXX上找不到属性[YYY]”:查看是不是YYY的属性名写错了(和映射方法里存的属性名对比,和实体类里的属性名作对比),注意大小写

四、属性的getter和setter有问题

如果找不到的属性是某个实体类的成员变量,查看一下该属性的getter和setter方法存不存在,存在的话名字有没有写错(注意大小写),甚至可以把自己手写的getter和setter删掉,用你的开发工具自动生成。
javax.el.PropertyNotFoundException:类型[com.ex.spring.entity.Dept]上找不到属性[dNo]_第1张图片

五、数据模型存入数据时有问题

比如像我那样的把变量作为字符串存了,比如在把属性放入Session域时没有成功放入,以至于用sessionScope取数据的时候数据不存在,诸如此类的存数据出的问题。

你可能感兴趣的:(#,异常处理,java)