Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Expression Language in JSP not working [duplicate]

Tags:

java

jsp

el

I am new to JSP and using Expression language. I am using Eclipse Galileo with version 2.5 and Tomcat 6 server . I just want to ask that my simple Expression Language is not printing the vale like if i write ${1>2} which suppose to give false but it is displaying ${1>2} only when it renders the page. But when i am using <c:out value="${1>2}"/> it is printing false correctly. I think there is an issue with tag library. Please kindly suggest me the reason for this i am giving a sample code for this so that you can understand where I am going wrong:-

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

Update as per the answers, here is more information:

I am showing my web.xml how it looks like:

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

And in my lib folder I have added only jstl.jar so that i can make use of <c:out> tag to display but my EL for template text is not working.

like image 649
user262577 Avatar asked Jan 30 '10 18:01

user262577


People also ask

Which will enable expression language in JSP?

1.1 Syntax of Expression Language (EL) To enable the EL expression in a JSP, developers need to use following page directive. To get a better idea, on how expression works in a JSP, we will see the below example where EL is used as an operator to add two numbers and get the output.

What is a expression in JSP <%= %> <% %>?

A JSP expression is used to insert the value of a scripting language expression, converted into a string, into the data stream returned to the client.

What does ${} mean in JSP?

When the JSP compiler sees the ${} form in an attribute, it generates code to evaluate the expression and substitues the value of expresson. You can also use the JSP EL expressions within template text for a tag. For example, the <jsp:text> tag simply inserts its content within the body of a JSP.

What is the syntax for JSP expression?

A JSP expression element contains a scripting language expression that is evaluated, converted to a String, and inserted where the expression appears in the JSP file.


1 Answers

I'm quoting from an answer I provided before to the problem of EL not working:

With other words, the EL expression doesn't get evaluated? That can have one or more of the following causes:

  1. Application server in question doesn't support JSP 2.0.
  2. The web.xml is not declared as Servlet 2.4 or higher.
  3. The @page is configured with isELIgnored=true.
  4. The web.xml is configured with <el-ignored>true</el-ignored> in <jsp-config>.

In your particular case, EL works in taglibs, but not in template text, so I suspect it's caused by point 2. Ensure that your web.xml is declared as at least Servlet 2.4. As Tomcat 6.0 supports Servlet 2.5, I would recommend to declare your web.xml as 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> 

Another rare cause I've seen on this is that there's a collision with EL JAR's in the classpath. Ensure that you have not copied any appserver-specific JAR files into your webapp's WEB-INF/lib or, more worse, the JRE/lib.

As you're already using Eclipse and Tomcat, I would review the development steps you used for this all. Ensure that you're using "Eclipse for Java EE developers" and that you've integrated the Tomcat instance in Eclipse's Servers view and that you've created a Dynamic Web Project set to "Servlet 2.5" which makes use of the Tomcat instance. This way everything should go automagically (Eclipse will take appserver's libraries in the build path itself and autogenerate a Servlet 2.5 compliant web.xml).

Update: as per your update: those com.servlet.El servlets look suspicious. What exactly do they do? Parsing EL? Remove them and retry.

like image 199
BalusC Avatar answered Oct 05 '22 03:10

BalusC