- 一、什么是OGNL,有什么特点?
-
- OGNL(Object-Graph
Navigation Language),大概可以理解为:对象图形化导航语言。是一种可以方便地操作对象属性的开源表达式语言。OGNL有如下特点: -
- 1、支持对象方法调用,形式如:objName.methodName();
-
- 2、支持类静态的方法调用和值访问,表达式的格式为@[类全名(包括包路)]@[方法名
| 值名],例如: -
- @java.lang.String@format('foo
%s', 'bar')或@tutorial.MyConstant@APP_NAME; -
- 3、支持赋值操作和表达式串联,例如:
-
- price=100,
discount=0.8, calculatePrice(),这个表达式会返回80; -
- 4、访问OGNL上下文(OGNL
context)和ActionContext; -
- 5、操作集合对象。
-
-
-
- 二、使用OGNL表达式
-
- OGNL要结合struts标签来使用。由于比较灵活,也容易把人给弄晕,尤其是“%”、“#”、“$”这三个符号的使用。由于$广泛应用于EL中,这里重点写%和#符号的用法。
-
- 1、“#”符号有三种用途:
-
- (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']"/> -
- 2、“%”符号的用途是在标签的属性值被理解为字符串类型时,告诉执行环境%{}里的是OGNL表达式。
-
- 这是一开始最让我不能理解的符号,原因是一些相关资源在表述时不太准备,经过一翻痛苦的探索,终于明白了它的用途。实际上就是让被理解为字符串的表达式,被真正当成ognl来执行。很有点类似javascript里面的eval_r()功能,例如
: -
- var
oDiv = eval_r("document.all.div"+index) -
- var
oDiv = eval_r("document.all.div"+index) -
- 当index变量为1时,语句就会被当作var
oDiv = document.all.div1 var oDiv = document.all.div1来执行。%{}就是起这个作用。举例: -
- <s:set
name="myMap" value="#{'key1':'value1','key2':'value2'}"/> -
- <s:property
value="#myMap['key1']"/> -
- <s:url
value="#myMap['key1']" /> -
- <s:set
name="myMap" value="#{'key1':'value1','key2':'value2'}"/> -
- <s:property
value="#myMap['key1']"/> -
- <s:url
value="#myMap['key1']"/> -
- 上面的代码第2行会在页面上输出“value1”,而第3行则会输出"#myMap['key1']"这么一个字符串。
如果将第3行改写成这样: -
- <s:url
value="%{#myMap['key1']}"/> -
- <s:url
value="%{#myMap['key1']}"/> -
- 则输出为“value1”。
-
-
-
-
-
- 这说明struts2里不同的标签对ognl的表达式的理解是不一样的。如果当有的标签“看不懂”类似“#myMap['key1']”的语句时,就要用%{}来把这括进去,“翻译”一下了。
-
- 3、“$”有两种用途
-
- (1)、在国际化资源文件中,引用OGNL表达式。
-
- (2)、在Struts
2配置文件中,引用OGNL表达式: -
- <action
name="saveUser" class="userAction" method="save"> -
- <result
type="redirect">listUser.action?msg=${msg}</result> -
- </action>
-
- <action
name="saveUser" class="userAction" method="save"> -
- <result
type="redirect">listUser.action?msg=${msg}</result> -
- </action>
相关推荐
LSTM模型 轨迹经纬度预测
原始时间序列数据如下所示,我们只取前两列纬度和经度作为输入数据 我们设定用前六个位置信息预测下一个位置,则两个样本的输入输出数据如下所示: 创建LSTM网络训练模型: import numpy as np from keras.layers.core import Dense, Activation, Dropout from keras.layers import LS...
OGNL表达式语言以及在Structs中的运用
OGNL 基本介绍 Structs2 OGNL表达式示例 示例一 Personjava OGNL1java 示例2 OGNL2java 示例3 OGNL3java 示例4 Classroomjava OGNL4java 示例5 Humanjava OGNL5javaOGNLOGNL是Object-Graph Navigation Language对象图导航语言的缩写,它是一种功能强大的表达式语言,通
基于Simulink的魔术公式轮胎动力学仿真
本篇博文主要用来记录汽车系统动力学课程的学习,仅供课程阶段参考,与实际工程应用还有较大距离。基于Simulink的魔术公式轮胎动力学仿真本实例主要有以下任务。1.建立魔术公式轮胎动力学仿真模型。2.绘制不同载荷下的轮胎纵向力—滑动率关系曲线。3.绘制不同载荷下的轮胎侧向力—侧偏角关系曲线。4.绘制不同载荷下的轮胎回正力矩—侧偏角关系曲线。提示:以下是本篇文章正文内容,下面案例可供参考。
一:Struts OGNL基础
1.OGNL是一种强大的表达式语言(EL),可以通过简单的表达式来访问Java对象中的属性。 2.OGNL上下文对象很多,但会选择一个作为根对象------值栈(Value Stack) Struts 中的OGNL Context 是 Action Context 。在开发过程中action包里的数据储存在值栈中。 见图: 3.对象
Rasa Core开发指南
文章目录1. Rasa Core简介1.1 Rasa Core消息处理流程1.2 安装Rasa Core2. Dialogue模型训练2.1 Story样本数据2.2 Domain2.2.0 intents2.2.1 actions2.2.2 templates2.2.3 entities2.2.4 slots3 .训练和使用对话模型3.1 训练对话模型3.2 使用对话模型4. 搭建CustomA...
2024“华为杯”中国研究生数学建模竞赛(A题)深度剖析_数学建模完整过程+详细思路+代码全解析
目标是优化风力涡轮机的功率调度,使其在给定的实时风速数据下,最小化涡轮机关键组件(如塔架和主轴)的疲劳损伤。问题的挑战在于,考虑通信延迟和测量噪声的同时,要确保功率输出与风速变化的响应快速且准确。
struts2之OGNL表达式和各种符号说明
文章目录1 OGNL概述2 OGNL的基本使用2.1 常量与操作符2.2 方法调用2.3 设置数值及表达式列表2.4 使用OGNL访问ValueStack2.5 使用OGNL访问ActionContext2.6 应用示例2.6.1 访问静态方法和静态属性 1 OGNL概述 OGNL是对象图导航语言Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言(Expression Language,简称为EL),通过它简单一致的表达式语法,可以存取对象的属性,调用对象的
使用FloodRisk2插件进行洪水风险评估
入汛以来,长江流域持续的强降雨使得沿岸多地成为洪水风险极高地区,抗洪、抢险、救灾继新冠病毒之后成为又一个攻坚阵地。如何科学地评估洪水风险,是快速决策的关键。 实际生活中,根据风险是否可控,一般将洪水风险大致分为两类:一类是通过数据分析可以得出其发生的可能性和后果,如强降雨引发的区域性洪水、水库/大坝溃决洪水等。这类洪水可以通过有关资料分析和设定一定条件计算得到可能的损失后果,也就是说,风险可以预判。另一类洪水风险基本是未知的,如滑坡堵塞河道形成堰塞湖引发的洪水,无法预知事件发生的地点和规模,具体的洪水风险无
OGNL中的#、%和$符号的用法
转自:https://blog.youkuaiyun.com/qq_24963197/article/details/51773224 一.OGNL中的#、%和$符号1.#符号的三种用法 1)访问非根对象属性,例如示例中的#session.msg表达式,由于Struts 2中值栈被视为根对象,所以访问其他非根对象时,需要加#前缀。实际上,#相当于ActionContext. getContext();...
ESP32S3学习——i2c,点亮0.96寸oled
ESP32S3学习——i2c,点亮0.96寸oled
低轨通信 | 手机直连低轨卫星通信:架构、关键技术与未来展望
手机直连低轨卫星通信正推动人类进入"全域连接"时代。当中国星网GW星座与千帆星座的万颗卫星点亮夜空,当普通智能手机在珠峰之巅仍能流畅视频通话,当远洋渔船通过卫星物联网实现精准捕捞——这些场景不仅重构通信产业格局,更将深刻改变人类生产生活方式。正如工信部《指导意见》所规划,到2030年我国将发展超千万卫星通信用户,催生万亿级新市场[1][5]。在这场太空基建竞赛中,技术创新与标准制定的双重突破,将决定未来数字文明的星空版图。
OGNL表达式struts2标签“%,#,$”的区别
构造 Map,如#{‘foo1’:‘bar1’, ‘foo2’:‘bar2’}。 第1行。 第4行。由于比较灵活,也容易把人给弄晕,尤其是“%”、“#”、“(3)、构造Map,如: #{‘foo1’:‘bar1’, ‘foo2’:‘bar2’}
RK3588多核NPU并行加速yolo优化教程:基于线程池的高性能推理实现
本教程详细介绍了RK3588多核NPU的并行加速优化方法。RK3588搭载三个独立NPU核心,总计算能力达6TOPS,但传统单线程方式无法充分发挥其性能。文章从硬件架构分析入手,详细讲解了三核心独立处理架构和多种工作模式,并通过代码示例展示了线程池技术的实现原理。线程池通过预创建工作线程、任务队列和条件变量等核心组件,避免了频繁创建线程的开销,能显著提升NPU的并行处理效率。教程还提供了性能计算公式和内存带宽优化策略,帮助开发者最大化利用RK3588的硬件算力,实现高性能AI推理。
OGNL表达式struts2标签“%,#,$
[b] OGNL表达式struts2标签“%,#,$” 一、什么是OGNL,有什么特点? [/b] OGNL(Object-Graph Navigation Language),大概可以理解为:对象图形化导航语言。是一种可以方便地操作对象属性的开源表达式语言。OGNL有如下特点: 1、支持对象方法调用,形式如:objNa...
IEM模型,地表粗糙度模拟
利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟
老版QQ原生表情gif动态
这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。
OGNL 表达式struts2标签“%,#,$”
一、什么是OGNL,有什么特点? OGNL(Object-Graph Navigation Language),大概可以理解为:对象图形化导航语言。是一种可以方便地操作对象属性的开源表达式语言。OGNL有如下特点: 1、支持对象方法调用,形式如:objName.methodName(); 2、支持类静态的方法调用和值访问,表达式的格式
大中型超市收银系统(可直接运行)
光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开
2万+



被折叠的 条评论
为什么被折叠?



