Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Whats the difference between "${foo.bar}" and "#{foo.bar}"?

Tags:

java

jsp

jstl

el

I can use objects from my Java Beans within .jsp files by using the Expression Language (EL). Therefore I can get my value by typing ${foo.bar}. But I can also use #{foo.bar}.

Can anybody explain the difference or provide a link with meaningful information?

like image 526
Marcus Avatar asked Nov 29 '22 20:11

Marcus


2 Answers

This is covered in the JSP 2.1 spec.

In Java EE, #{expr} is used for deferred evaluation and ${expr} for immediate evaluation. Deferred expressions (#{expr}) expressions can only be used with tag attributes that accept them. This is a Java EE convention, but other domains could impose their own meaning (e.g. if you wanted to use EL in your own templates).

like image 94
McDowell Avatar answered Dec 04 '22 05:12

McDowell


#{foo.bar} syntax is from the JSF expression language. Some bright spark thought it would be a good idea to use a different syntax to JSP EL (i.e. ${foo.bar}). I think some JSP containers are tolerant of this cockup, and let you use either one.

like image 23
skaffman Avatar answered Dec 04 '22 07:12

skaffman