Je cours Tomcat 6.0.18 sous Linux.Comportement d'erreur du langage d'expression JSP?
J'ai un JSP qui utilise un haricot comme ceci:
<jsp:useBean id="helper"
type="com.example.SomeType"
scope="request"/>
La page fait référence à un attribut de helper
avec la langue d'expression comme ceci:
<!-- This works properly, but could fail silently if the bean name is incorrect. -->
<div><p>Here's some stuff: ${helper.stuff}</div>
Au cours de refactoring où j'ai manqué une occurrence du nom helper
, j'ai remarqué que aucune erreur n'est levée si le nom helper
est écrit incorrectement. Pas sur l'écran, et pas dans mes fichiers journaux. Rien ne se produit pour l'extrait de langue d'expression dans la sortie:
<!-- Wrong name! "foo" should be "helper" but no error is observed (other than missing ouput)! -->
<div><p>Here's some stuff: ${foo.stuff}</div>
Maintenant, une erreur est en relief (mes affichages de page d'erreur personnalisée et je vois une exception dans mon fichier journal) si j'utilise la syntaxe JSP suivante avec un nom incorrect pour helper
:
<!-- Wrong name, but an error is raised. -->
<div><p>Here's some stuff: <jsp:getProperty name="foo" property="stuff"/></div>
Dans ce cas, le journal enregistre cette entrée:
SEVERE: requestURI: /some.jsp servletName: jsp statusCode: 500
org.apache.jasper.JasperException: Attempted a bean operation on a null object.
Pour être complet, la syntaxe fonctionne correctement jsp:getProperty
lorsque le nom de haricot est correct:
<!-- Works properly, protects me from an incorrect name, but is more verbose than EL. -->
<div><p>Here's some stuff: <jsp:getProperty name="helper" property="stuff"/></div>
Pourquoi ne vois-je pas une erreur quand j'écris $ {} foo.stuff? Y a-t-il une option de configuration qui contrôle les rapports d'erreurs dans de tels cas?
Juste pour affirmer ce que les autres ont dit, cela est une caractéristique délibérée de EL. – Eddie