Java表达式语言如何解析布尔属性?(在JSF 1.2中)
因此,我们都知道,这#{someBean.value}
将尝试获取someBean
被称为的某些属性的内容value
。它将寻找getValue()
。但是,如果此属性是boolean
?它将寻找isValue()
。它不会寻找的是hasValue()
。
这让我开始思考,它到底在做什么?
Java EE
5教程章节-引用统一表达语言PageContext.FindAttribute()
。PageContext
将您送至JSPContext
。他们没有一个人真正解释他们遵循的规则来确定他们要寻找的方法的名称。
查找说明方法名称必须以get开头的文档也很容易。但是,我知道这isValue()
可行。
谁能指出我的书面记录。我不是在寻找教程或示例,而是在寻找参考。
回答:
它在JavaBeansSpec和EL规范中都有权威记录。
以该boolean
属性为例,在JavaBeans规范的8.3.2章中对此进行了描述:
回答:
此外,对于布尔属性,我们允许使用getter方法来匹配模式:
public boolean is<PropertyName>()
;可以提供此“ is < PropertyName >”方法来代替“ get < PropertyName >”方法,或者除了“ get <
PropertyName >”方法之外,还可以提供该方法。
在任一情况下,如果“是< 属性名 >”的方法是存在用于一个布尔属性然后,我们将使用“是< 属性名 >”方法来读取的属性值。
布尔属性的示例可能是:
public boolean isMarsupial();
public void setMarsupial(boolean m);
因此,#{bean.marsupial}
完全期望上面的getter / setter对。
在EL规范的第1.18.5章中:
回答:
- 如果
A
为null
或""
,则返回false
- 否则,如果
A
为Boolean
,则返回A
- 否则,如果
A
为String
,并且Boolean.valueOf(A)
不引发异常,则将其返回
以上是 Java表达式语言如何解析布尔属性?(在JSF 1.2中) 的全部内容, 来源链接: utcz.com/qa/401674.html