Невозможно получить доступ к внутреннему классу в бине - PullRequest
16 голосов
/ 03 апреля 2012

Я использую JSF 2.0. У меня есть управляемый компонент, к которому я могу получить доступ через свою страницу xhtml. Внутри боба я объявил внутренний класс. Я могу получить доступ к ArrayList<String> управляемого компонента, но не ArrayList<InnerClass>, и я получаю сообщение об ошибке, что InnerClass не имеет свойства для чтения. Кто-нибудь знает, что не так?

1 Ответ

33 голосов
/ 04 апреля 2012

Это может произойти, если внутренний класс не public.Затем он будет невидим для других классов вне пакета (как, например, сам JSF / EL!).Убедитесь, что внутренний класс равен public всякий раз, когда вам нужен доступ к нему с помощью JSF / EL.

public class Bean {

    public class InnerClass {
        // ...
    }

}

В противном случае он будет интерпретирован как String, и вы получите непонятные исключения, такие как

javax.el.ELException: /test.xhtml: свойство 'someProperty' недоступно для чтения по типу java.lang.String

, когда вы хотите получить доступ к #{innerClass.someProperty}.

...