Struts2_ognl表达式
来源:互联网 发布:mac pro 价格 编辑:程序博客网 时间:2024/06/14 03:58
OGNL是Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言,通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。它使用相同的表达式去存取对象的属性。这样可以更好的取得数据。
OGNL(Object-Graph Navigation Language),可以方便地操作对象属性的开源表达式语言,使页面更简洁;
支持运算符(如+-*/),比普通的标志具有更高的自由度和更强的功能;
Struts 2默认的表达式语言是OGNL,原因是它相对其它表达式语言具有下面几大优势:
支持对象方法调用,如xxx.doSomeSpecial();
支持类静态的方法调用和值访问,表达式的格式为@[类全名(包括包路径)]@[方法名 | 值名],例如:@java.lang.String@format(‘foo %s’, ‘bar’)或@tutorial.MyConstant@APP_NAME;
支持赋值操作和表达式串联,如price=100, discount=0.8, calculatePrice(price*discount),这个表达式会返回80;
访问OGNL上下文(OGNL context)和ActionContext;
操作集合对象。
可以直接new一个对象
Ognl表达式用法:
OGNL是通常要结合Struts 2的标志一起使用。主要是#、%和$这三个符号的使用。使用方法如下:
新建名为Struts2_OGNL的Web工程
”主要有三种用途:
访问OGNL上下文和Action上下文,#相当于ActionContext.getContext();下表有几个ActionContext中有用的属性: 名称 作用 例子
parameters 包含当前HTTP请求参数的Map #parameters.id[0]作用相当于request.getParameterValues(“id”).get(0);
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属性,直到找到为止
构造Map,如#{‘foo1’:’bar1’, ‘foo2’:’bar2’}。
Struts2的表单标签
<s:form action="" method="" theme="simple"> <div>用户名:<s:textfield name="uname"></s:textfield></div> <div>密码:<s:password name="upwd"></s:password> </div> <div>城市:<s:select list="#{'110':'北京','111':'上海','112':'天津'}"></s:select> </div> <div>性别:<s:radio list="#{'男':'男','女':'女'}" name="sex"></s:radio> </div> <div>爱好:<s:checkboxlist list="#{1:'吃',2:'喝',3:'玩',4:'睡'}" name="hobby"></s:checkboxlist> </div> <div>附件:<s:file name="img"></s:file> </div> <div>评价:<s:textarea cols="30" rows="5"></s:textarea> </div> <div><s:submit value="提交"></s:submit> <s:reset value="重置"></s:reset> </div></s:form>
Struts2 逻辑标签
<!-- 定义变量,并且将变量保存到scope指定范围,默认map对象中 --> <s:set var="num" value="1239"></s:set> <s:set var="num2" value="1239" scope="session"></s:set> <s:if test="#num>#session.num2"> <h2>num>num2</h2> </s:if> <s:elseif test="#num==#session.num2"> <h2>num==num2</h2> </s:elseif> <s:else> <h2>num<num2</h2> </s:else><!-- 定义了一个list集合 --> <s:set var="list" value="{'1','333','4','5','699'}"></s:set> <s:property value="#list"/><br/> <!-- s:iterator:将每次遍历的元素压入栈顶 <s:property/>:默认访问栈顶的元素 --> <s:iterator var="x" value="#list" begin="0" end="4" status="st"> <s:if test="#st.isOdd()"><!-- ognl表达式可以直接调用方法 --> <div style="background-color: red"><s:property/> </div> </s:if> <s:else> <div style="background-color: yellow"><s:property/> </div> </s:else> </s:iterator>
静态成员的访问:
<hr/> <s:property value="@java.lang.Integer@MAX_VALUE"/> <s:property value="@com.bjsxt.action.TestMethod@show()"/>
- Struts2_ognl表达式
- struts2_ognl表达式符号的使用方法
- struts2_ognl表达式与值栈
- Struts2_OGNL
- Struts2_OGNL
- 01 Struts2_OGNL
- 8.struts2_OGNL
- Struts2_OGNL与VS
- 16-17. Struts2_OGNL
- struts2_ognl和valueStack简介
- Struts2_OGNL和值栈
- (15)Struts2_OGNL读取Object栈
- 11级_Java_曹建波 03.06 Struts2_ognl
- 15.Struts2_OGNL读取对象栈(ObjectStack)属性
- (16)Struts2_OGNL读取Map栈及其他字段和方法属性
- 16.Struts2_OGNL读取Map栈(Context Map)里对象的属性及其他字段和方法
- 表达式
- 表达式
- Python爬虫入门 | 2 爬取豆瓣电影信息
- Celery-4.1 用户指南: Configuration and defaults
- BigDecimal记录
- git 遇到的问题与解决方案
- 什么是 JSX?
- Struts2_ognl表达式
- 用户体验研究方法选择的一些原则
- linux crontab命令
- 求最小正序列的和java实现
- ADB server didn't ACK 问题解决
- python 文件操作 os 模块和 shutil 模块
- 通配符的使用规则
- 常见视频编码格式解析
- WPF-DataGrid表头CheckBox反选