Recentemente ho aggiornato il mio sviluppo tomcat da 7.0.0 a 7.0.4. Ho avuto cose come:Parole chiave Java non consentite come identificatori EL
<c:set var="static" value=".." />
<c:set var="class" value=".." />
Entrambi hanno funzionato su 7.0.0 ma hanno smesso di funzionare su 7.0.4. I opened a bug, è stato chiuso, con la risposta che:
In sé e per sé, tale tag verrà compilato.
I controlli per gli identificatori Java sono stati aggiunti all'elaborazione EL, quindi ho il sospetto che abbia qualche EL non valido altrove nella pagina.
Questo non suona abbastanza chiaro, ma non ho avuto una risposta successiva, quindi ho guardato le specifiche EL. Per la JSP 2.1 (l'ultimo dei quali 2.2) ho scoperto che:
Capitolo 1, pagina 21: un identificatore è vincolato ad essere un identificatore Java - per esempio, no -, no /, ecc
E questo è il massimo che ho trovato. Vorrei leggere questa riga in modo che si applichino i requisiti di sintassi applicabili agli identificatori java, ma non le parole riservate (poiché neighter class
o static
appaiono nell'elenco delle parole riservate in EL). Il JLS non è riferito al termine "identificativo Java" (ed è per altri casi nelle specifiche 2.2, che non ho esaminato completamente)
Quindi, Tomcat ha ragione di rifiutare questi nomi; a quale punto della specifica si riferisce, e pensi che lo stiano interpretando correttamente.
sì, sembra che un riferimento al JLS è stato aggiunto alle specifiche. – Bozho