【xy】struts--OGNL、Struts-tags

OGNL(Object Graph Navigation Language)表达式指的是value里面的内容

一、value="xxx",直接访问valueStack里面的内容

二、value="user.age",只有传了user.age的值,才会执行user的构造函数。想初始化demain model,可以自己new,也可以传参数值,但这时候需要保持空的构造方法。

三、value="hello.length( )",访问值栈中对象的普通方法

四、value="m( )",访问栈中的普通方法

五、访问静态方法:value="@com.xxx.xxx@s()"        //第一个@后是类名,第二个@后是方法名

      记得在struts.xml中设置:<constant name="struts.ognl.allowStaticMethodAccess" value="true">

六、访问普通类的构造方法:value="new com.xxx.xxx.User(8)"

七、访问集合:

     1.访问LIst:  value="users"

     2.访问List中某个元素:value="users[1]"

     3.访问List中元素某个属性的集合:value="users.{age}"

     4.访问List中元素某个属性的集合中的特定值:value="users[0].age"

访问Set与List的前两个相同;

访问Map:

      1.访问Map:value="dogMap"

      2.访问Map中的某个元素:value="dogMap.dog101"

      3.访问Map中的所有Key: value="dogMap.keys"

      4.访问Map中的所有value: value="dogMap.values"

      5.访问容器的大小:   value="dogMap.size()"

八、投影(过滤)

      1.value="users.{?#this.age==1}.{age}"

//users是一个list,{}表示过滤条件,?#表示过渡条件,^#表示开头,$#表示结尾,this表示循环过程中的当前对象

九、用[ ]访问其中的元素

eg. value="[0]"

     表示访问栈里面的第几个元素。action元素一般情况下是置顶的,所以当[0]时表示的是   




Struts-tags标签:

注意标签的属性有的是字符串,有的是OGNL表达式,所以要分清楚

一、常用的几个标签

a.property

  1.取属性:<s:property value="username">

//property的value的类型为object,则会把value值解析为一个OGNL表达式

  2.取值为字符串:<s:property value="'username'">

//取字符串username

  3.设定默认值:<s:property value="admin" default=“管理员”>

//当admin不存在时,获取到默认值"管理员"

  4.设定HTML:<s:property value="'<hr/>'" escape="false">

//默认escape为true,表示会把它解析为字符串。设false时,会把它看作HTMl标签


b.set

set标签在实际应用中,会在换名字时用到。

  1.设定值(scope默认为request和ActionConText):    <s:set var="adminName" value="userName">

//把adminName的值放入request、actionText中

//scope范围有五种:application,session,request,page,action

  2.从request取值: <s:property value="#request.adminName"> 

  3.从actionContext取值: <s:property value="#adminName">

  4.设定范围:<s:set name="adminPassword" value="password" scope="page">

  5.从相应范围取值: <%=pageContext.getAttribute("adminPassword")%>  

  6.设定var,范围为ActionContext:< s:set name="adminPassword" value="password" var="a"/>

  7.使用#取值:<s:property value="#a">

  8.从相应的范围取值: <s:property value="#session.adminPassword">


c.bean

定义bean,并使用param来设定新的属性值。

<s:bean>开始时会new一个对象,放在valueStack中; 当</s:bean>结束时,会释放valueStack中定义的。

要想在它结束后继续使用,就要把属性写到var里。

eg. <s:bean name="com.xxx.xxx.xxx">

         <s:param name="name" value="da"></s:param></bean> 


d.include(不经常用)

<s:set var="incPage" value="">

<s:include value="%{#incPage}">

// %{ 表示把它强制转换成OGNL表达式,


二、控件标签

1.<s:include test="">

//test中是一个逻辑表达式

2.iterator可以遍历collections、map、enumeration、iterator、array

<s:iterator value="{1,2,3}" status="" />

      <s:property/>

   <s:iterator value="{1,2,3}" status="" var="x">

       <s:property value="#x.toUpperCase( )"/>

   <s:iterator value="{1,2,3}"  status="status">

       <s:property value="#status.count">

       <s:property value="#status.index">

//遍历list

    <s:iterator value="#{1:'a',2:'b',3:'c'}">

//遍历map

三、UI标签

四、AJAX标签

五、$#%的区别

1.$ 用于i18n和struts配置文件中传参时用到

2.# 取得ActionContext的值

3.% 将原本的文本属性解析为ognl,对于本来就是ognl的属性不起作用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值