2012-04-03 9 views
15

Sto utilizzando JSF 2.0. Ho un bean gestito a cui posso accedere tramite la mia pagina xhtml. Dentro il fagiolo ho dichiarato una classe interiore. Posso accedere a ArrayList<String> di bean gestito ma non a ArrayList<InnerClass> e ottengo l'errore che la InnerClass non ha una proprietà leggibile. Qualcuno sa cosa c'è che non va?Impossibile accedere alla classe interna nel bean

risposta

30

Ciò può accadere se la classe interna non è public. Sarà quindi invisibile ad altre classi esterne al pacchetto (come JSF/EL stesso!). Assicurati che la classe interna sia public ogni volta che devi accedervi da JSF/EL.

public class Bean { 

    public class InnerClass { 
     // ... 
    } 

} 

altrimenti verrà interpretato come String e si otterrà eccezioni confuse come

javax.el.ELException: /test.xhtml: Proprietà 'someProperty' non leggibili su tipo java.lang .String

quando si desidera accedere a #{innerClass.someProperty}.

+1

Ho trovato questo dopo 2 ore di ricerca di un bug. Immagino che dovrebbero almeno rendere l'eccezione più chiara. La stringa qui si riferisce al tipo atteso (nel mio caso era booleano), che è davvero confuso. – NeplatnyUdaj