web-dev-qa-db-fra.com

La langue d'expression dans JSP ne fonctionne pas

Je suis nouveau sur JSP et utilise le langage d’expression. J'utilise Eclipse Galileo avec la version 2.5 et le serveur Tomcat 6. Je veux juste demander que mon langage d'expression simple n'imprime pas la valeur comme si j'écrivais ${1>2}, ce qui suppose de donner false, mais affiche ${1>2} uniquement lors du rendu de la page. Mais quand j'utilise <c:out value="${1>2}"/>, il imprime correctement. Je pense qu'il y a un problème avec la bibliothèque de balises. S'il vous plaît, suggérez-moi gentiment la raison de cela, je vous donne un exemple de code afin que vous puissiez comprendre où je me trompe: -

<%@ page language="Java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://Java.Sun.com/jstl/core" prefix="c" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
                                 "http://www.w3.org/TR/html4/loose.dtd">


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Expression Language Example</title>
</head>
<body>

Is 1 greater than 2 using cout  :<c:out value="${1>2}"/>

Is 1 greater than 2 without using cout: ${1>2}
</body>
</html> 

Mise à jour Selon les réponses, voici plus d'informations:

Je montre à mon web.xml à quoi il ressemble:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://Java.Sun.com/xml/ns/javaee" xmlns:jsp="http://Java.Sun.com/xml/ns/javaee/jsp" xmlns:web="http://Java.Sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://Java.Sun.com/xml/ns/javaee http://Java.Sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>ScriptLessJsp</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>

  <servlet>
    <description></description>
    <display-name>ElServlet</display-name>
    <servlet-name>ElServlet</servlet-name>
    <servlet-class>com.servlet.El.ElServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>ElServlet</servlet-name>
    <url-pattern>/ElServlet</url-pattern>
  </servlet-mapping>
  <servlet>
    <description></description>
    <display-name>Collections</display-name>
    <servlet-name>Collections</servlet-name>
    <servlet-class>com.servlet.El.Collections</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Collections</servlet-name>
    <url-pattern>/go</url-pattern>
  </servlet-mapping>
</web-app>

Et dans mon dossier lib, j’ai ajouté seulement jstl.jar pour pouvoir utiliser la balise <c:out> mais mon EL pour le texte du modèle ne fonctionne pas. 

29
user262577

la définition de <% @ page isELIgnored = "false"%> m'a aidé. Je ne sais pas pourquoi c'était la racine du problème dans mon cas. pas encore pourquoi

11
Ilya Yevlampiev

Dans mon cas, j’ai généré une application Web par le générateur d’archétype maven, j’utilise maven-archetype-webapp. J'ai besoin de changer deux choses:

  1. dans web.xml, modifiez la tête en:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns="http://Java.Sun.com/xml/ns/javaee" 
      xmlns:web="http://Java.Sun.com/xml/ns/javaee/web-app_2_5.xsd"
      xsi:schemaLocation="http://Java.Sun.com/xml/ns/javaee  http://Java.Sun.com/xml/ns/javaee/web-app_2_5.xsd"
      version="2.5">
    
  2. par défaut, Eclipse a généré un fichier jsp avec la tête:

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    

Il suffit de l'enlever.

9
Jimmy

BalusC le couvre , mais j'ajouterai ces commentaires:

<%@ taglib uri="http://Java.Sun.com/jsp/jstl/core" prefix="c"%>

Le JSTL TLD namespace devrait inclure un "jsp" (comme ci-dessus). Étant donné que cette erreur d’espace de nommage est peut-être due à l’utilisation d’anciennes instructions, consultez la documentation la plus récente pour vous assurer que vous n’avez inclus aucune bibliothèque obsolète dans WEB-INF/lib. Un certain nombre de technologies qui étaient auparavant séparées sont maintenant incluses dans le conteneur (le langage EL en étant un).

En passant, j'utiliserais généralement des mots clés tels que gt AU LIEU DE > ET lt AU LIEU DE < - c'est plus convivial pour XML et ses semblables.

4
McDowell

J'ai eu le problème qu'avec la ligne <!DOCTYPE html> dans mon JSP, le Tomcat démarré avec Eclipse n'interprétait pas correctement l'EL. Utiliser la guerre et la copier dans le dossier webapps, puis lancer Tomcat avec la ligne de commande a fait l'affaire.

Alors, évidemment, le plugin Eclipse Tomcat a un problème avec<!DOCTYPE html>?!

0
Niklas P