【问题标题】:Cannot access inner class in bean无法访问bean中的内部类
【发布时间】:2012-04-17 08:31:55
【问题描述】:

我正在使用 JSF 2.0。我有一个托管 bean,我可以通过我的 xhtml 页面访问它。在 bean 内部,我声明了一个内部类。我可以访问托管 bean 的 ArrayList<String> 但不能访问 ArrayList<InnerClass> 并且我收到 InnerClass 没有可读属性的错误。有谁知道怎么回事?

【问题讨论】:

    标签: jsf-2 el inner-classes managed-bean


    【解决方案1】:

    如果内部类不是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}时。

    【讨论】:

    • 我在寻找错误 2 小时后发现了这个。我想他们至少应该让异常更清楚。这里的 String 指的是预期的类型(在我的例子中是布尔值),这真的很混乱。
    猜你喜欢
    • 1970-01-01
    • 2013-10-21
    • 1970-01-01
    • 2013-11-08
    • 1970-01-01
    • 1970-01-01
    • 2012-03-05
    • 2012-10-29
    • 1970-01-01
    相关资源
    最近更新 更多