2012-04-03 91 views
15

我正在使用JSF 2.0。我有一个托管bean,可以通过我的xhtml页面访问。在bean内部,我声明了一个内部类。我可以访问托管bean的ArrayList<String>,但不能访问ArrayList<InnerClass>,并且我得到InnerClass没有可读属性的错误。任何人都知道什么是错的?无法访问bean中的内部类

回答

30

如果内部类不是public,则可能发生这种情况。然后它将在包之外的其他类中不可见(如JSF/EL本身!)。每当需要通过JSF/EL访问内部类时,请确保内部类为public

public class Bean { 

    public class InnerClass { 
     // ... 
    } 

} 

否则会被解释为String,你会得到令人困惑的异常像

javax.el.E​​LException:/test.xhtml:房产 'someProperty' 在类型java.lang中的不可读.String

当你想要访问#{innerClass.someProperty}

+1

我在找了一个bug 2个小时后发现了这个。我想他们至少应该让这个例外更清楚。这里的字符串指的是预期的类型(在我的情况下它是布尔值),这真是令人困惑。 – NeplatnyUdaj 2013-09-18 16:21:54