- 什么是OGNL表达式
- Object-Graph Navigation Language的缩写。
- 可以遍历整个对象结构图,实现对象类型转换等功能的表达式。
- OGNL实际上是个Map集合,有一个上下文根对象。
- ActionContext作为OGNL上下文,并把ValueStack作为根对象。
- ValueStack
- 可以执行,增加,删除,查询。
- struts2会把Action放到栈顶。
- OGNL中的几个家伙
- #
- 访问非根对象属性
#session.msg
相当于 ActionContext.getContext().getSession().getAttribute("msg");
- %
- 字符串类型时,计算OGNL表达式
- $
- 在国际化资源文件中,引用OGNL表达式
- 在Struts 2框架的配置文件中引用OGNL表达式
- @
- 访问静态方法
- 常用标签
- 流程控制标签
<s:if test="{}"></s:if>//if表达式
<s:if test="{}"></s:if><s:else></s:else>//if else 表达式
<s:ifelse test="{}"></s:ifelse>//Ifelse 表达式
//test 字符串 要加%{} 判断集合元素的符号 in,not in
//in 判断集合是否在当前集合内,not in 判断集合是否不在当前集合内. OGNL过滤表达式
?://获取所有符合的元素
^://获取第一个符合的元素
$://获取最后一个符合的元素 <s:iterator value=""></s:iterator>
//对一个集合进行迭代
//id 集合内元素的ID
//status 指定迭代对象名称
<s:iterator value="books.{?#this.price > 35}">
//?#this.price > 35 this 指取当前集合内的属性值符合条件的元素。
<s:property value="title" /> - $<s:property value="price" />
</s:iterator>- 通用标签
<s:property value="">
//default 获取属性值.
//scope 指定命名空间.
//value 属性名
//id 元素标识 <s:set scope="" name="" value="">
//设置属性值 value 如果是字符串需要加'',否则会当成变量.
//scope 可以是application、session、request、 page或action. <s:action id="" name="" namespace="" executeResult="false|true" ignoreContextParams="false|true"/>
//action 引用名称 namespace 命名空间 executeResult 是否返回视图 ignoreContextParams 是否传递参数 <s:bean id="" name="">
// id 引用名称 带id 标签结束不会移除对象 name 实现类全路径
<s:param name="" value=""/>
//name 参数名称 value 参数值
</s:bean> <s:date format="" nice="" name="" id=""/>
//format 日期输出格式 nice 输出时间差 name 时间值 id 引用名称- 调试标签
<s:debug/>
//输出所有的信息valuestack context <s:fielderror/>
//控制端 调用addFieldErrors(,) <s:actionerror/>
//获取Action错误消息 需要在控制端调用addActionError 方法 <s:actionmessage/>
//获取Action消息 需要在控制端调用addActionMessage方法- 表单标签
- #