2012-04-03 15 views
15

Estoy usando JSF 2.0. Tengo un frijol administrado al que puedo acceder a través de mi página xhtml. Dentro del frijol, declare una clase interna. Puedo acceder al ArrayList<String> del bean administrado pero no al ArrayList<InnerClass> y me da el error de que el InnerClass no tiene una propiedad legible. Alguien sabe lo que está mal?No se puede acceder a la clase interna en bean

Respuesta

30

Eso puede suceder si la clase interna no es public. ¡Entonces será invisible para otras clases fuera del paquete (como JSF/EL mismo!). Asegúrese de que la clase interna sea public siempre que necesite acceder a ella por JSF/EL.

public class Bean { 

    public class InnerClass { 
     // ... 
    } 

} 

De lo contrario, se interpretará como String y obtendrá confusas excepciones como

javax.el.ELException: /test.xhtml: Propiedad 'someProperty' no se puede leer en el tipo java.lang .String

cuando desea acceder #{innerClass.someProperty}.

+1

Lo encontré después de 2 horas de buscar un error. Supongo que al menos deberían aclarar la excepción. La Cadena aquí se refiere al tipo esperado (en mi caso era booleano), lo cual es realmente confuso. – NeplatnyUdaj

Cuestiones relacionadas