jsp里面有个很像EL表达式的# ,是啥表达式?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jsp里面有个很像EL表达式的# ,是啥表达式?相关的知识,希望对你有一定的参考价值。

jsp里面有个很像EL表达式的# ,是什么表达式?
请说下使用方法,谢谢^^

这个是Struts2 OGNL表达式

OGNL要结合struts标签来使用。由于比较灵活,也容易把人给弄晕,尤其是“%”、“#”、“$”这三个符号的使用。

“#”符号有三种用途:
(1)、访问非根对象(struts中值栈为根对象)如OGNL上下文和Action上下文,#相当于ActionContext.getContext();下表有几个ActionContext中有用的属性:
parameters
包含当前HTTP请求参数的Map
#parameters.id[0]作用相当于request.getParameter("id")

request
包含当前HttpServletRequest的属性(attribute)的Map
#request.userName相当于request.getAttribute("userName")

session
包含当前HttpSession的属性(attribute)的Map
#session.userName相当于session.getAttribute("userName")

application
包含当前应用的ServletContext的属性(attribute)的Map
#application.userName相当于application.getAttribute("userName")

注:attr 用于按request > session > application顺序访问其属性(attribute),#attr.userName相当于按顺序在以上三个范围(scope)内读取userName属性,直到找到为止。用于过滤和投影(projecting)集合,如books.?#this.price<100;构造Map,如#'foo1':'bar1', 'foo2':'bar2'。

(2)、用于过滤和投影(projecting)集合,如: books.?#this.price>35

books.?#this.price>35

(3)、构造Map,如: #'foo1':'bar1', 'foo2':'bar2'

#'foo1':'bar1', 'foo2':'bar2'这种方式常用在给radio或select、checkbox等标签赋值上。如果要在页面中取一个map的值可以这样写:

<s:property value="#myMap['foo1']"/>

<s:property value="#myMap['foo1']"/>

楼主具体请看参考资料:

参考资料:http://jlins.javaeye.com/blog/567954

参考技术A jsf里面的标签
和el差不多的
参考技术B   OGNL表达式
  构造Map,如#'foo1':'bar1', 'foo2':'bar2'。
  支持容器的构造的表达式:
  例如:"green", "red", "blue"构造一个List,#"key1" : "value1", "key2" : "value2", "key3" : "value3"构造一个Map
  OGNL是Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言,通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。它使用相同的表达式去存取对象的属性。
参考技术C 是不是struts的标签啊?

解决jsp无法用el表达式的问题

在写springMVC的项目时,用jsp去前端展示数据,期间遇到了一个问题就是无法用el表达式。

最后排除一切之后发现是因为自己maven项目里web.xml的版本问题。

我的maven项目web.xml版本用的是2.3版本的,如果web.xml是2.3版本的话,jsp里面有个默认的属性是:

<%@ page isELIgnored="true"%>

如果这个属性设置为true的话,默认el表达式是关闭的,所以我们可以在.jsp文件里面加入如下代码:

<%@ page isELIgnored="false"%>

如果是一两个jsp文件,我们这样改可能没什么,如果是太多jsp文件的话,这样子改就未必太麻烦了,如果我们想用一劳永逸的方法的话,最好是去修改xml的版本问题:

我们可以把web.xml的版本换成3.0的,这样子是默认支持el表达式的,我们就不需要再去修改jsp文件了。

 

以上是关于jsp里面有个很像EL表达式的# ,是啥表达式?的主要内容,如果未能解决你的问题,请参考以下文章

JSP常用标签——JSTL标签和EL表达式

Ognl 和 EL 和jstl区别

OGNL是啥意思?

jsp---EL和JSTL

EL表达式里面不能直接使用list.size()得到长度,

EL表达式