当前位置 : 主页 > 编程语言 > java >

无法读取JSP EL中的布尔属性

来源:互联网 收集:自由互联 发布时间:2021-06-25
如果一个对象属性声明为类型Boolean(不是原始布尔值),则EL识别中似乎有问题! 说你有以下对象 class Case{ private Boolean valid; public Boolean isValid(){ return this.valid; } public void setValid(Boolean val)
如果一个对象属性声明为类型Boolean(不是原始布尔值),则EL识别中似乎有问题!

说你有以下对象

class Case{
     private Boolean  valid;

     public Boolean isValid(){
         return this.valid;
     }

     public void setValid(Boolean val){
         this.valid = val;
     }
}

说我们把一个类型为Case的对象放在请求中,名称为“case”,那么我在JSP中尝试这个:

<td>Object is ${case.valid ? "Valid":"Invalid"} </td>

这给我错误“有效”不是对象的属性Case!如果我将布尔值更改为原始布尔值,它可以工作!

这是EL中布尔类型的已知问题,它们不被识别为布尔值,而是Java“正常”对象?什么是正确的方法来处理这个?

谢谢

我曾经看过的所有例子都谈到布尔属性,除了getProperty()和从不布尔值之外,允许getProperty()形式的getter.

我没有找到任何’官方’引用这个行为,但是this blog post似乎描述了我最初评论的时候我所怀疑的 – 一个布尔值是一个对象,而一个布尔是一个原始的,而Java有自动打包,EL将忽略isProperty ()getter返回一个布尔值,而是寻找一个getProperty()方法.

所以我怀疑,在你的例子中,如果你将isValid()的返回类型更改为布尔值,而不是布尔值(但是将该字段的类型保留为布尔值),则EL表达式将按照您期望的方式工作.

上一篇:jsp打印
下一篇:JSP和Java EE之间的关系
网友评论