formulario - jtls java
Lenguaje de expresión en JSP no funciona (5)
Esta pregunta ya tiene una respuesta aquí:
- Expresiones EL no evaluadas en JSP 2 respuestas
Soy nuevo en JSP y uso el lenguaje Expression. Estoy usando Eclipse Galileo con la versión 2.5 y el servidor Tomcat 6. Solo quiero pedirle a mi Simple Expression Language que no imprima el vale como si escribiera ${1>2}
que suponga que es falso, pero muestra ${1>2}
solo cuando muestra la página. Pero cuando estoy usando <c:out value="${1>2}"/>
está imprimiendo falso de manera correcta. Creo que hay un problema con la biblioteca de etiquetas. Por favor amablemente sugiérame el motivo de esto, le doy un código de muestra para que pueda entender dónde me estoy equivocando:
<%@ 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 según las respuestas, aquí hay más información:
Estoy mostrando mi web.xml
como 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 agregado solo jstl.jar
para que pueda usar la etiqueta <c:out>
para mostrar pero mi EL para el texto de la plantilla no funciona.
Cito de una answer que proporcioné antes al problema de que EL no funciona:
En otras palabras, la expresión EL no se evalúa? Eso puede tener una o más de las siguientes causas:
- El servidor de aplicaciones en cuestión no es compatible con JSP 2.0.
- El
web.xml
no está declarado como Servlet 2.4 o superior.- La página
@page
está configurada conisELIgnored=true
.- El archivo web.xml está configurado con
<el-ignored>true</el-ignored>
en<jsp-config>
.
En su caso particular, EL funciona en taglibs, pero no en texto de plantilla, así que sospecho que es causado por el punto 2. Asegúrese de que su web.xml
esté como mínimo como Servlet 2.4. Como Tomcat 6.0 es compatible con Servlet 2.5, recomendarí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 el classpath. Asegúrese de no haber copiado ningún archivo JAR específico de un servidor de aplicaciones en WEB-INF/lib
o, lo que es peor, JRE/lib
.
Como ya está usando Eclipse y Tomcat, revisaría los pasos de desarrollo que utilizó para todo esto. Asegúrese de estar utilizando "desarrolladores de Eclipse para Java EE " y de haber integrado la instancia de Tomcat en la vista Servidores de Eclipse y de haber creado un proyecto de Web dinámico configurado como "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 web.xml
compatible con Servlet 2.5).
Actualización: según su actualización: los servlets com.servlet.El
parecen sospechosos. ¿Qué es exactamente lo que hacen? Analizando EL? Quítelos y vuelva a intentarlo.
En mi caso, generé una aplicación web mediante el generador de arquetipos maven, utilizo maven-archetype-webapp. Necesito cambiar dos cosas:
en web.xml, cambie la cabecera a:
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd "version =" 2.5 ">
de forma predeterminada, eclipse genera el archivo jsp con la cabecera:
! DOCTYPE html PUBLIC "- // W3C // DTD HTML 4.01 Transitional // ES" " http://www.w3.org/TR/html4/loose.dtd ">
Solo elimínalo.
Tuve el problema de que con la línea <!DOCTYPE html>
en mi JSP, el gato comenzó 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.
Entonces, obviamente, el plugin de eclipse tomcat tiene un problema con <!DOCTYPE html>
?!
establecer <% @ 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
BalusC lo cubre , pero agregaré estos comentarios:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
El espacio de nombres JSTL TLD debe incluir un "jsp" (como se indica arriba). 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 comentario, generalmente usaría palabras clave como gt
lugar de >
y lt
lugar de <
- esto es más amigable para XML y su tipo.