Struts2 尚学堂 3 OGNL
来源:互联网 发布:快速效果图制作软件 编辑:程序博客网 时间:2024/06/10 09:16
什么是OGNL
object graphy navigator language:对象图导航语言 ,是一种EL(expression language),用于数据绑定,把界面元素与对象层某个类的属性绑定在一起,修改显示同步
使用:
OgnlAction.java:
public
class
OgnlAction
extends
ActionSupport{
private
String
password;
private
String
username;
private
Cat cat;
private
Map<
String
,Dog> dogMap =
new
HashMap<
String
,Dog>();
private
Set<Dog> dogs =
new
HashSet<Dog>();
private
User user;
private
List<User> users =
new
ArrayList<User>();
public
OgnlAction(){
users.add(
new
User(
1
));
users.add(
new
User(
2
));
users.add(
new
User(
3
));
dogs.add(
new
Dog(
"dog1"
));
dogs.add(
new
Dog(
"dog2"
));
dogs.add(
new
Dog(
"dog3"
));
dogMap.put(
"dog100"
,
new
Dog(
"dog100value"
));
dogMap.put(
"dog101"
,
new
Dog(
"dog101value"
));
dogMap.put(
"dog102"
,
new
Dog(
"dog102value"
));
}
public
String
execute(){
return
"succcess"
;
}
public
String
m(){
return
"hello"
;
}
省略
set
get
方法
ognl.jsp:
<body>
<ol>
<li>访问值栈中的action普通属性:username= <s:property value=
"username"
/></li>
<li>访问值栈中对象的普通属性(
get
set
方法)<s:property value=
"user.age"
/></li>
<li>访问值栈中对象的普通属性(
get
set
方法)<s:property value=
"cat.friend.name"
/></li>
<li>访问值栈中对象的普通方法<s:property value=
"password.length()"
/></li>
<li>访问值栈中对象的普通方法<s:property value=
"cat.miaomiao()"
/></li>
<li>访问值栈中action的普通方法<s:property value=
"m()"
/></li>
<hr/>
<!-- 前面@+类名+@+方法名/属性 -->
<li>访问静态方法<s:property value=
"@com.suning.struts2.ognl.S@s()"
/></li>
<li>访问静态方法<s:property value=
"@com.suning.struts2.ognl.S@STR"
/></li>
<li>访问Math类的静态方法<s:property value=
"@@max(2,3)"
/></li>
<hr/>
<li>访问普通类的构造方法<s:property value=
"new com.suning.struts2.ognl.User(8)"
/></li>
<hr/>
<li>访问List<s:property value=
"users"
/></li>
<li>访问List中的某个元素<s:property value=
"users[1]"
/></li>
<li>访问List中元素的某个属性的集合<s:property value=
"users.{age}"
/></li><!-- {}代表集合 -->
<li>访问List中元素某个属性的集合中特定值<s:property value=
"users.{age}[0]"
/><s:property value=
"users[0].age"
/></li>
<li>访问Set:<s:property value=
"dogs"
/></li>
<li>访问Set中某个元素<s:property value=
"dogs[1]"
/></li><!--
set
中是无序的,所以取不到 -->
<li>访问Map<s:property value=
"dogMap"
/></li><!-- 访问整个Map,输出所有元素 -->
<li>访问Map中某个元素<s:property value=
"dogMap.dog101"
/>|<s:property value=
"dogMap['dog101']"
/>|<s:property value=
"dogMap[\"dog1\"]"
/></li><!-- \" 转义字符 -->
<li>访问Map中所有的key<s:property value=
"dogMap.keys"
/></li>
<li>访问Map中所有的value<s:property value=
"dogMap.values"
/></li>
<li>访问容器的大小<s:property value=
"dogMap.size()"
/>|<s:property value=
"dogMap.size"
/></li>
<hr/>
<!-- {}中是过滤条件:{?#或^#或$#}只有这三种;
this
:代表循环到的对象 -->
<!-- 正则表达式中:^:开头 $:结尾 ?:过滤条件 此处稍微有点区别-->
<li>投影(过滤)<s:property value=
"users.{?#this.age==1}.{age}"
/></li><!-- 拿到users中age==
1
的那个user -->
<li>投影<s:property value=
"users.{^#this.age>1}.{age}"
/></li><!-- 大于
1
的元素集合中的开头那个users -->
<li>投影<s:property value=
"users.{$#this.age>1}.{age}"
/></li><!-- 大于
1
的元素集合中结尾的那个 user-->
<li>投影<s:property value=
"users.{$#this.age>1}.{age}==null"
/></li><!-- 大于
1
的元素集合中age为
null
的那个 user-->
<hr/>
<!-- 用[]来访问里面的元素 我们刚刚访问的action永远在栈顶 从上往下数元素--><!-- 在服务器跳转,会把用到的action都压入栈 -->
<li>[]:<s:property value=
"[0]"
/></li><!--[
0
]代表从第
0
个位置一直到栈底 -->
<li>[]:<s:property value=
"[0].username"
/></li><!-- 当第一个action没有找到username属性时,会自动去找第二个action-->
</ol>
<s:debug></s:debug>
</body>
0 0
- Struts2 尚学堂 3 OGNL
- struts2 尚学堂 1 Action
- Struts2 尚学堂 2 Result
- Struts2 尚学堂 4 Tags
- Struts2+Hibernate3.3+Spring2.5整合实现尚学堂OA
- 尚学堂马士兵struts2操作手册
- 尚学堂
- 尚学堂
- 尚学堂
- 尚学堂
- 尚学堂
- 尚学堂马士兵 Struts2 笔记心得修改版
- 尚学堂马士兵struts2 课堂笔记(一)
- 尚学堂马士兵struts2 课堂笔记(二)
- 尚学堂马士兵struts2 课堂笔记(三)
- 尚学堂马士兵struts2 课堂笔记(四)
- spring,struts2,hibrenate框架视频下载地址(尚学堂)
- 尚学堂j2ee视频教程
- Struts2 尚学堂 2 Result
- 最长上升子序列
- Java守护线程
- 时空错乱 by CrossOver Foobar2000/Office 2010 @ Mac OS X
- 【Android开发日记】 AndroidCharts LineView根据数据自动调整高度
- Struts2 尚学堂 3 OGNL
- java.util.concurrent 接口 ExecutorService
- linux常用命令(持续更新)
- spring 入门
- Struts2 尚学堂 4 Tags
- MAC OS 下配置NODEJS 开发环境及调试
- java.net 类 ServerSocket
- Afianl加载网络图片(续)
- 黑格尔哲学体系的绝对[化]、封闭性问题之一 杨一之