13

我有以下树节点类:

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;
    }

}

这是一个简单的复选框,指示文档是否包含在任何内容中。但是,当尝试从 JSF 2 EL 中引用它时

...
<h:selectBooleanCheckbox value="#{node.isToC}" />
...

我得到一个例外:

引起:javax.el.PropertyNotFoundException:/main.xhtml @541,64 value="#{node.isToC}":类'ChapterTreeNode'没有属性'isToC'。

(我想我几乎尝试了每一种组合,至少我是这样感觉的...... ;-))

如何解析该布尔属性?需要改变什么?

4

1 回答 1

23

您不应指定方法名称,而应仅指定属性名称。在指定 bean 属性时,您需要省略is(and getand ) 前缀。set

<h:selectBooleanCheckbox value="#{node.toC}" />

EL 将自动为属性使用正确的 getter/setter(请注意,这确实意味着实例变量的物理存在不是必需的)。你得到的例外,

引起:javax.el.PropertyNotFoundException:/main.xhtml @541,64 value="#{node.isToC}":类'ChapterTreeNode'没有属性'isToC'。

基本上意味着没有像isIsToc()or这样的方法getIsToc()(而且它是正确的)。

您的第二个问题是您使用Boolean而不是boolean. 然后,您应该真正调用该方法getToC()getIsToC()代替isToC(). 在后一种情况下,您可以继续使用#{node.isToC}.

也可以看看:

于 2011-09-15T21:46:34.700 回答