org.hibernate.collection.internal.PersistentSet' 没有 属性 'size'

org.hibernate.collection.internal.PersistentSet' does not have the property 'size'

在JSP页面上,我是这样做的${records.size} 其中 records 是 Set 类型。然后我收到这个错误。 我检查了文档,size() 方法在 org.hibernate.collection.internal.PersistentSet 中可用。 那么这个错误的可能原因是什么?

语法 ${records.size} 基本上告诉 EL 打印 size 属性(不是方法!) =13=]。当EL需要获取一个属性时,就会去查找bean后面class中的getter方法。因此,当 属性 名称为 size 时,预期的 getter 方法为 getSize()。如果不存在此方法,那么您将面临与您当前面临的完全相同的异常。另见 javax.el.PropertyNotFoundException: Property 'foo' not found on type com.example.Bean.

事实上,org.hibernate.collection.internal.PersistentSet 没有 getSize() 方法。 IE。它确实根本没有 size 属性。所以例外是完全正确的。

基本上你想调用 size() 方法,而不是 size 属性 后面的 getter 方法。相应地修正您的 EL 表达式:

${records.size()}