Las etiquetas jstl <c: if> no funcionan en el archivo jsp, obteniendo un error en tomcat 7

Tengo problemas para usar la etiqueta jstl<c:if>&nbsp;en archivo jsp. Básicamente debería hacer esto como 2 preguntas aunque estén relacionadas.

La primera pregunta:

En mi WEB-INF / lib, pongo un jstl 1.2.jar

En mi archivo jsp, pongo esto<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>.

En mi archivo jsp, uso el<c:if>&nbsp;hacer algo. Si la condición es verdadera, mostrará algún mensaje especial.

Básicamente los contenidos en el interior.<c:if>&nbsp;no funciona, porque el mensaje no se muestra, incluso si la condición es verdadera.

Pero si cambié para usar el espacio de nombres más antiguo,<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core"%>. Otros no se cambian, entonces la etiqueta if está funcionando, porque se muestra el mensaje dentro de la etiqueta if.

Mi primera pregunta es por qué tengo que usar / jstl en lugar de / jsp / jstl en el espacio de nombres. Estoy usando jstl1.2.jar. así que se supone que debo usar el uri más nuevo para 1.2. sin embargo, el uri más antiguo funciona pero no el nuevo uir.

La segunda pregunta:

Ignoro la primera pregunta que tengo, y solo uso / jstl como mi espacio de nombres solo porque hace que mi aplicación web funcione como quiero. Sin embargo, cuando implemento mi aplicación web en Tomcat 7.X, muestra las siguientes excepciones:

org.apache.jasper.JasperException: /mywebapp.jsp (línea: 35, columna: 10) De acuerdo con la directiva TLD o atributo en el archivo de etiquetas, la prueba de atributos no acepta ninguna expresión org.apache.jasper.compiler.DefaultErrorHandler.jspError ( DefaultErrorHandler.java:42)

en la línea /mywebapp.jsp: 35, columna: 10, que es la etiqueta <c: if>.

Si cambio el espacio de nombres de <% @ taglib prefix = "c" uri = "http://java.sun.com/jstl/core"%> a <% @ taglib prefix = "c" uri = "http: / /java.sun.com/jsp/jstl/core "%>, puede implementarse en Tomcat con éxito, pero la funcionalidad dentro de la etiqueta <c: if> no es útil. otros códigos fuera de<c:if>&nbsp;etiqueta de trabajo sin embargo.

Así que estoy muy confundido y realmente quiero saber cómo solucionarlo.

Por cierto, estoy usando servlet 2.5, jsp 2.0, jstl 1.2. Intenté actualizar el jsp2.0 a jsp2.1 para ver si puedo solucionar el primer problema, pero no tengo idea de cómo actualizar la versión de jsp.