2012-06-19 3 views
8

Ho riscontrato un errore in JSP e non riesco a capire cosa lo stia causando. Ho incluso tutte le librerie appropriate e ho fatto in modo di seguire la convenzione dei bean in maiuscolo/minuscolo. Ecco il codice rilevante nel JSP:javax.el.PropertyNotFoundException in una pagina JSP

<c:forEach items="${relevantData}" var="entry"> 
    <p>${entry.price}</p> 
</c:forEach> 

Il relevantData era un List<MyData>. Ai fini di questa domanda è sufficiente dire che MyData è una classe che contiene un prezzo denominato Double (con un Getter e un Setter che seguono la convenzione bean). Quando provo a caricare questa pagina ricevo il seguente errore nei log dei server (Tomcat 7.0.22):

javax.el.PropertyNotFoundException: 
Property 'price' not readable on type java.lang.Double 

Perche 'si ottengono questo errore e come posso risolvere il problema?

+1

i metodi di accesso sono pubblici, è la classe interna MyData? –

+1

I metodi di accesso sono tutti pubblici. La classe stessa non era pubblica. –

risposta

22

Il problema è stato effettivamente causato dalla visibilità della classe MyData. Avevo generato automaticamente la classe MyData in Netbeans ma non ho notato che non c'era nessuna parola chiave public davanti al nome della classe. Ciò significava che, quando è arrivato al JSP, non c'era modo di leggere le proprietà in MyData.

Ho cambiato il tipo in public e il problema è stato risolto.

+0

Mi imbatto nello stesso identico problema. spostato il tipo in un nuovo file, ma dimentica di aggiungere pubblico ... grazie! –

+0

doh, avrei dovuto essere in grado di capirlo! Grazie per questo post! –

+0

Questo problema si è verificato anche dopo aver utilizzato UCDectector per eliminare il codice non necessario in eclissi. Poiché il programma non era in grado di interpretare il codice JSTL, suggeriva di modificare il modificatore della classe su "predefinito", e l'ho fatto. Grazie per l'aiuto per individuare il mio problema. – KjetilNordin