struts2中-------%{ } 、 %{#}、 #
# 通常强调从上下文取
例如:
#request.name等价于request.getAttribute("name")
#session.name等价于session.getAttribute("name")-----------------------------------------------------------------------------------------------------------
%{ } 强调的是从你设定的root点取
Struts 2中值栈被视为根对象
%{ }用于计算表达式如%{10+20}结果将输出30 , %{"a"+"b"}结果将输出"ab"-----------------------------------------------------------------------------------------------------------
%{#} 仍然用于计算表达式,只不过操作元可以是变量
<s:setname="age" value="%{25}"/> ,则%{#age}将输出25,也可以省略"#",写为%{age}
若将age加10,可这么写: %{#age+10},将输出35,不能省略"#"。也就说变量用于计算时不能省略"#"
ognl中的#、%和$
#相当于ActionContext. getContext()
#session.msg表达式相当于ActionContext.getContext().getSession(). getAttribute(”msg”)
#用于过滤集合、投影集合
persons.{?#this.age>20}
投影:stus.{username}就表示将suts中所有的username属性取出组成一个新的列表
用来构造Map
#{’foo1′:’bar1′,’foo2′:’bar2′}。--------------------------------------------------------------------------------------------------------
计算?
%符号的用途是在标志的属性为字符串类型时,计算OGNL表达式的值
---------------------------------------------------------------------------------------------------------
引用?
$引用国际化OGNL表达式,例如引用min、max;
$在Struts2框架的配置文件中引用OGNL表达式;
注:ognl英文全称:Object-Graph Navigation Language,中文为“对象图导航语言”
个人点评:
“#”这个符号像中文“井”,上下左右都有空间,开的口卡在中间,所以说它代表“上下(左右)文”还挺形象的,那么代表“上下文”有啥意义呢?这个符号的产生是为了解决什么问题呢?答案是:调用上下文的变量;
想创造一个调用上下文变量的东西,那东西至少能在上下文间来去自如的驰骋吧,“#”光看面相就是可以的;
“%”这个符号就是中文的百分号,java中的取余符号,它们有一个共同点:代表一种运算;所以%{...}代表{}里东西的一种运算;
“$”的本质也是运算,这俩有啥区别呢?但“$”是一种美元符号,代表的是更为国际化的运算;打个比方:若%代表的是咱国内约定俗成的加法运算,那么$代表的是国际上统一规定的加法运算;
这个纯属为了好记忆瞎写着玩的,不必当真... ....