Kaw*_*awu 13 jsf boolean el naming-conventions propertynotfoundexception
我有以下树节点类:
public abstract class DocumentTreeNode extends TreeNodeImpl implements javax.swing.tree.TreeNode
{
private Boolean isToC;
...
public Boolean isToC()
{
return isToC;
}
public void setToC(Boolean isToC)
{
this.isToC = isToC;
}
}
Run Code Online (Sandbox Code Playgroud)
这是一个简单的复选框,指示文档是否包含在任何内容中.但是,当试图从JSF 2 EL中引用它时
...
<h:selectBooleanCheckbox value="#{node.isToC}" />
...
Run Code Online (Sandbox Code Playgroud)
我得到一个例外:
引起:javax.el.PropertyNotFoundException:/main.xhtml @ 541,64 value ="#{node.isToC}":类'ChapterTreeNode'没有属性'isToC'.
(我想我几乎尝试了所有组合,至少我觉得这样...... ;-))
如何解决该布尔属性?需要改变什么?
Bal*_*usC 22
您不应指定方法名称,只能指定属性名称.您需要忽略is
(与get
和set
指定bean属性时)前缀.
<h:selectBooleanCheckbox value="#{node.toC}" />
Run Code Online (Sandbox Code Playgroud)
EL将自动为属性使用正确的getter/setter(请注意,这确实意味着实例变量的物理存在不是必需的).你得到的例外,
引起:javax.el.PropertyNotFoundException:/main.xhtml @ 541,64 value ="#{node.isToC}":类'ChapterTreeNode'没有属性'isToC'.
基本上意味着没有这样的方法isIsToc()
或getIsToc()
(并且它没有权利).
你的第二个问题是你使用Boolean
而不是boolean
.然后你应该真的调用方法getToC()
或getIsToC()
代替isToC()
.在后一种情况下,您可以继续使用#{node.isToC}
.
归档时间: |
|
查看次数: |
17022 次 |
最近记录: |