区别:%{} 、 ${} 、 #

本文详细解析了Struts2框架中OGNL表达式的使用方式,包括#、%、%{#}

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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表达式,例如引用minmax

      $Struts2框架的配置文件中引用OGNL表达式;


        注:ognl英文全称:Object-Graph Navigation Language,中文为“对象图导航语言



       个人点评:

    “#”这个符号像中文“井”,上下左右都有空间,开的口卡在中间,所以说它代表“上下(左右)文”还挺形象的,那么代表“上下文”有啥意义呢?这个符号的产生是为了解决什么问题呢?答案是:调用上下文的变量;

       想创造一个调用上下文变量的东西,那东西至少能在上下文间来去自如的驰骋吧,“#”光看面相就是可以的;

       “%”这个符号就是中文的百分号,java中的取余符号,它们有一个共同点:代表一种运算;所以%{...}代表{}里东西的一种运算;

       “$”的本质也是运算,这俩有啥区别呢?但“$”是一种美元符号,代表的是更为国际化的运算;打个比方:若%代表的是咱国内约定俗成的加法运算,那么$代表的是国际上统一规定的加法运算;

      这个纯属为了好记忆瞎写着玩的,不必当真... ....

      


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值