2012-04-03 5 views
15

Ich verwende JSF 2.0. Ich habe eine verwaltete Bean, auf die ich über meine xhtml-Seite zugreifen kann. Innerhalb der Bohne erklärte ich eine innere Klasse. Ich kann auf ArrayList<String> der verwalteten Bean zugreifen, aber nicht ArrayList<InnerClass>, und ich bekomme den Fehler, dass die InnerClass keine lesbare Eigenschaft hat. Wer weiß, was los ist?Kann nicht innere Klasse in Bean zugreifen

Antwort

30

, dass, wenn die innere Klasse passieren kann, ist nicht public. Es ist dann für andere Klassen außerhalb des Pakets unsichtbar (wie JSF/EL selbst!). Stellen Sie sicher, dass die innere Klasse public ist, wann immer Sie von JSF/EL darauf zugreifen müssen.

public class Bean { 

    public class InnerClass { 
     // ... 
    } 

} 

Sonst wird es als String interpretiert werden, und Sie werden verwirrende Ausnahmen wie

javax.el.ELException erhalten: /test.xhtml: Anwesen 'someProperty' nicht lesbar auf Typ java.lang .String

wenn Sie auf #{innerClass.someProperty} zugreifen möchten.

+1

Das fand ich nach 2 Stunden für einen Fehler suchen. Ich denke, sie sollten zumindest die Ausnahme deutlicher machen. Der String bezieht sich hier auf den erwarteten Typ (in meinem Fall war es boolesch), was wirklich verwirrend ist. – NeplatnyUdaj