2012-04-03 3 views
15

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

ответ

30

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

public class Bean { 

    public class InnerClass { 
     // ... 
    } 

} 

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

javax.el.ELException: /test.xhtml: свойство 'SomeProperty' не читаемый по типу java.lang .String

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

+1

Я нашел это после 2 часов поиска ошибки. Я думаю, они должны хотя бы сделать исключение более ясным. Строка здесь относится к ожидаемому типу (в моем случае это было логическое), что действительно запутывает. – NeplatnyUdaj