第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > el表达式找不到对象属性

el表达式找不到对象属性

时间:2021-02-26 08:24:08

相关推荐

el表达式找不到对象属性

javax.el.PropertyNotFoundException: 类型[com.ytz.entity.Book]上找不到属性[author]

我在使用el表达式取值时出现了上述错误,如下是涉及到错误的代码:

前端:(部分)

<c:forEach items="${currBooks}" var="book"><tr><td><a href="">${book.bname}</a></td><td>${book.author}</td></tr></c:forEach>

实体类:(部分)

public class Book {private String bname;private String author;public String getBname() {return bname;}public void setBname(String bname) {this.bname = bname;}public String getAuther() {return author;}public void setAuther(String author) {this.author = author;}}

出现问题时,我仔细查看了属性名,确认一致无误,而后发现author的getter()和setter()两个函数名是getAuther(),抱着试一试的心态,将两个函数修改了,如下:

public String getAuthor() {return author;}public void setAuthor(String author) {this.author = author;}

项目就可以跑了。

而后我查看了el表达式识别对象属性的原理:

以表达式${book.author}为例

EL表达式会去book类里寻找这个author的get方法,此时会自动把author首字母大写并加上get前缀,一旦找到与之匹配的方法,EL表达式就会认为这就是要访问的属性,并返回属性的值。

所以,想要通过EL表达式获取对象属性的值,那么这个属性就必须有与之对应的get方法。

由此,若出现如上错误,最好先查看对应类中的getter()函数,确保其格式是“get+属性名首字母大写”

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。