Struts2 学习笔记14 OGNL part3

来源:互联网 发布:发型知乎女生短发 编辑:程序博客网 时间:2024/05/22 21:06

  OGNL这部分主要就是配置的方法,虽然不难但是比较繁琐,大家可以先做了解,等到需要用到的时候再查询。

接下来要说的是访问普通类的构造方法,很简单就不上代码了,访问普通类的构造方法:<s:property value="new com.tfj.struts2.ognl.User(9)"/>这样就可以可。

  要详细说的是访问集合。还是先上ognl.jsp。9-19是访问集合的ognl表达式。


ognl.jsp

<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><%@taglib uri="/struts-tags" prefix="s"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <base href="<%=basePath%>">        <title>Ognl表达式学习</title>    <meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">-->  </head>    <body>    <ol>    <li>访问值栈中的action的普通属性:username=<s:property value="username"/></li>    <li>访问值栈中对象的普通属性:<s:property value="user.age"/></li>    <li>访问值栈中对象的普通属性:<s:property value="cat.friend.name"/></li>    <hr/>    <li>访问action的属性的方法:<s:property value="password.length()"/></li>    <li>访问静态的属性:<s:property value="@com.tfj.struts2.ognl.S@STR"/></li>    <li>访问静态的方法:<s:property value="@com.tfj.struts2.ognl.S@s()"/></li>    <li>访问Math类:<s:property value="@@max(2,3)"/>    <hr/>    <li>访问普通类的构造方法:<s:property value="new com.tfj.struts2.ognl.User(9)"/></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>    <li>访问Map:<s:property value="dogmap"/></li>    <li>访问Map中某个元素:<s:property value="dogmap.dog101"/></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="dogs.size"/>                </ol>    <s:debug></s:debug>  </body></html>

然后我挑其中的一些需要注意的地方来讲一下,为了和上面的截图对应起来,我就用截图中的序号。

9.访问List 直接访问List的名称就可以了。

10.访问List中的某个元素,用中括号。

11.访问List中某个元素某个属性的集合,用大括号把属性名括起来。

12.访问List中某个元素某个属性集合中的特定值,有两种方式,我们习惯于用后一种。

13.访问set,访问set名。
14.访问set中某个元素,因为set是无序的,无法访问。
15.访问Map,访问Map名称。
16.访问Map中某个元素,直接访问。
17.访问Map中所有key,加keys。

18.访问Map中所有value,加values。

19.访问容器大小,有两种方式size带不带括号都行。


接下来要说的就是投影了,简单说就是过滤,选择集合中符合条件的显示出来。

<li>投影:<s:property value="users.{?#this.age==1}.{age}"/></li>
<li>投影:<s:property value="users.{^#this.age>1}.{age}"/></li>
<li>投影:<s:property value="users.{$#this.age>1}.{age}"/></li>
<li>投影:<s:property value="users.{$#this.age>1}==null"/>


20.显示users里age为1的age集合。

21.^表示第一个,表达式表示第一个age大于1,显示age的集合。

22.$表示最后一个,表达式表示最后个age大于1,显示age的集合。

23.这是个判断,很好理解。


下一部分就是中括号表达式。

<li>[]:<s:property value="[0]"/>

会得到

这个表达式会访问对应的action,[]:<s:property value="[0].username"/>就可以得到u。

还有如果第一个action里没有username,他就会找第二个action,在服务器跳转的时候,值栈里有多个action。






原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 睫角守宫断尾怎么办 定金发票弄丢了怎么办 xp电脑显示输入不支持怎么办 月子见风怎么办暴雪将 老氏电视机出现雪花点怎么办 飞利浦电视显示雪花片怎么办 电视无信号出雪花怎么办 电视打开都是雪花没有电视台怎么办 电视视频1无信号怎么办 新买的电视无信号怎么办 卫星有信号没有视频怎么办 户户通没有信号怎么办视频 雪花泥粘衣服上怎么办 遗产按份额处分判决后怎么办 宝马后驱车下雪天怎么办 宝马后驱车路滑怎么办 车子陷入泥地里怎么办 深圳居住证签注过期了怎么办 手机不能播放视频乱码了怎么办 被加密的视频无法观看怎么办 苹果5忘记id密码怎么办 七个月宝宝脾胃不好怎么办 八个月宝宝脾虚怎么办 七个月宝宝脾胃虚怎么办 海岛奇兵点错了怎么办 螳螂的脚断了怎么办 海岛奇兵打不过玩家怎么办 海岛奇兵资源满了怎么办 海岛奇兵杯越来越多打不玩家怎么办 海岛奇兵控杯技巧 杯数太高怎么办 海岛奇兵发现求救信号怎么办 海岛奇兵被打了怎么办 小鱼翅卡喉咙了怎么办 鱼翅卡在喉咙里怎么办 斗鱼身份证被使用怎么办 做的鱼丸太腥了怎么办 做鱼丸太稀了怎么办 斗鱼手机号换了怎么办 斗鱼直播掉帧怎么办 手机一直卡顿点不动怎么办呢 斗鱼直播分值底怎么办