2010-01-30 15 views
27

Soy nuevo en JSP y uso el lenguaje de Expresión. Estoy usando Eclipse Galileo con la versión 2.5 y el servidor Tomcat 6. Solo quiero pedirle a mi lenguaje de expresión simple que no imprima el vale como si escribiera ${1>2}, que supongo que da falso, pero muestra ${1>2} solo cuando muestra la página. Pero cuando estoy usando <c:out value="${1>2}"/>, imprime falso correctamente. Creo que hay un problema con la biblioteca de etiquetas. Por favor, amablemente me sugieren la razón de esto estoy dando un código de ejemplo para esto de modo que usted pueda comprender dónde voy mal: -Idioma de expresión en JSP no funciona

<%@ 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> 

actualización de acuerdo con las respuestas, aquí es más información:

estoy mostrando mi web.xml cómo se ve:

<?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> 

Y en mi carpeta lib he añadido solamente jstl.jar para que pueda hacer uso de <c:out> etiqueta para mostrar bu t mi EL para el texto de la plantilla no funciona.

Respuesta

47

estoy citando de un answer he proporcionado antes de que el problema de EL que no trabaja:

Con otras palabras, la expresión EL no consigue evaluado? Eso puede tener una o más de las siguientes causas:

  1. El servidor de aplicaciones en cuestión no es compatible con JSP 2.0.
  2. El web.xml no está declarado como Servlet 2.4 o superior.
  3. El @page se configura con isELIgnored=true.
  4. El web.xml está configurado con <el-ignored>true</el-ignored> en <jsp-config>.

En su caso particular, EL trabaja en taglibs, pero no en texto de la plantilla, por lo que sospecho que es causada por el punto 2. Asegúrese de que su web.xml está declarada como al menos Servlet 2.4. Como Tomcat 6.0 es compatible con Servlet 2.5, recomendaría a declarar su web.xml como Servlet 2.5:

<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" 
    id="Your_WebApp_ID" 
    version="2.5"> 

    <!-- Here you go. --> 

</web-app> 

Otra causa rara que he visto en esto es que hay una colisión con EL JAR en la ruta de clase. Asegúrese de que tiene no copiado cualquier archivo JAR de aplicación específica en su aplicación web WEB-INF/lib o, peor aún, JRE/lib.

Como ya está usando Eclipse y Tomcat, revisaría los pasos de desarrollo que utilizó para todo esto. Asegúrese de que está utilizando "Eclipse para Java EE desarrolladores" y que ha integrado la instancia de Tomcat en Eclipse Servidores de vista y que se ha creado un Proyecto Web dinámica conjunto de "Servlet 2.5" que hace uso de la instancia de Tomcat De esta forma, todo debería ir automáticamente (Eclipse tomará las librerías del servidor de aplicaciones en la propia ruta de compilación y autogenerará un Servlet 2.5 que cumpla con web.xml).

Actualización: según su actualización: los com.servlet.El servlets parecen sospechosos. ¿Qué es exactamente lo que hacen? Analizando EL? Quítelos y vuelva a intentarlo.

+0

También noté que el servlet no debe llamarse "jsp", "default", "ssi", "cgi", nombrarlo así también romperá la funcionalidad de JSP ya que estos están incorporados en Tomcat servlets. – rustyx

+0

@BalusC .. Tengo el mismo problema. Podría resolverlo con su solución de modificación web.xml ... Muchas gracias ... –

+0

también tiene sentido agregar <% @ page isELIgnored = "false"%> que solo me ayudó !!!! Tomcat 7, java 8 –

4

BalusC covers it, pero voy a añadir estos comentarios:

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

El espacio de nombres JSTL TLD debe incluir un "JSP" (como el anterior). Dado que este error en el espacio de nombres puede deberse a seguir instrucciones anteriores, consulte la documentación más reciente para asegurarse de que no haya incluido ninguna biblioteca obsoleta en WEB-INF/lib. Varias tecnologías que solían estar separadas ahora están incluidas en el contenedor (el lenguaje EL es uno).

Como un aparte, generalmente usaría palabras clave como gt instead of > and lt instead of < - esto es más amigable con XML y su tipo.

8

En mi caso, generé una aplicación web por maven archetype generator, utilizo maven-archetype-webapp. Tengo que cambiar dos cosas:

  1. en web.xml, cambiar la cabeza para:

    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd "version =" 2.5 ">

  2. por defecto, Eclipse genera archivo JSP con la cabeza:

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

Solo elimínelo.

+0

Tuve el problema en un viejo Tomcat 5.5 y lo resolví yendo de la aplicación web 2.5 a 2.4 – weberjn

+0

resuelto con 2_5.xsd y version = "2.5" muchas gracias –

0

Tuve el problema de que con la línea <!DOCTYPE html> en mi JSP, el tomcat iniciado con eclipse no interpretó el EL correctamente. Usar el war y copiarlo en la carpeta webapps y luego iniciar tomcat con la línea de comando hizo el trabajo.

Así que obviamente el plugin de tomcat eclipse tiene un problema con <!DOCTYPE html>?!

7

configuración <% @ page isELIgnored = "false"%> me ayudó. No sé por qué fue la raíz del problema en mi caso. no está claro por qué todavía

+0

Su solución es simplemente increíble. Después de probar muchas otras opciones. El tuyo es trabajado para mí –

Cuestiones relacionadas