簡體   English   中英

嘗試解析EL中的布爾屬性時出現javax.el.PropertyNotFoundException

[英]javax.el.PropertyNotFoundException when trying to resolve Boolean properties in EL

我有以下樹節點類:

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'。

(我想我幾乎嘗試了所有組合,至少我覺得這樣...... ;-))

如何解決該布爾屬性? 需要改變什么?

您不應指定方法名稱,只能指定屬性名稱。 在指定bean屬性時,需要省略is (和getset )前綴。

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

EL將自動為屬性使用正確的getter / setter(請注意,這確實意味着實例變量的物理存在不是必需的)。 你得到的例外,

引起:javax.el.PropertyNotFoundException:/main.xhtml @ 541,64 value =“#{node.isToC}”:類'ChapterTreeNode'沒有屬性'isToC'。

基本上意味着沒有像isIsToc()getIsToc()這樣的方法(並且它正確)。

你的第二個問題是你使用Boolean而不是boolean 然后,您應該真正調用方法getToC()getIsToC()而不是isToC() 在后一種情況下,您可以繼續使用#{node.isToC}

也可以看看:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM