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

来源:互联网 发布:图像增强算法的研究 编辑:程序博客网 时间:2024/04/28 11:40

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中的取余符号,它们有一个共同点:代表一种运算;所以%{...}代表{}里东西的一种运算;

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

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

      


0 0
原创粉丝点击