您的位置:首页 > 编程语言 > Java开发

struts2一些概念介绍和标签的使用

2016-12-30 16:29 525 查看
依赖注入

模块包含

struts.xml的模块包含格式

<include file="xx.xml" >

OGNL

对象导航语言 有个超大的好处就是根据对象访问属性,避免混乱。

OGNL标签分为:data tags和 control tags

一、数据标签

property标签

获取值栈中的普通对象

<s:property value=""/>

是访问哪些有get和set的属性的方法

name:<s:property value="name"/><br>
name:<s:property value="user.name"/><br>

访问值栈中的普通对象的普通方法

1.password是String类型

password:<s:property value="password.length()"/><br>

2.实体类中自定义对象的普通方法

eat:<s:property value="person.eat()"/><br>

3.Action类中定义的普通方法

<s:property value="methodaction1()"/>

4.访问集合

1>array

和list一样

2> list

访问list

<s:property value="listname"/>

访问list某个属性的集合

<s:property value="listname.{age}"/>

访问list某个集合的某特定值

<s:property value="listname.{age}[0]"/>或者

<s:property value="listname[o].age"/>更容易理解和记忆

3>set

和list一样

4>map

访问map单个元素

<s:property value="mapname.key"/>或者 <s:property value="mapname['key']"/> 单引号

访问map所有key

<s:property value="mapname.keys"/>

访问map所有value

<s:property value="mapname.values"/>

访问容器的大小

<s:property value="mapname.size()"/>或者 <s:property value="mapname.size"/>

注:什么是普通方法和属性:就是非static的方法和非构造方法和属性

5.访问静态方法和和属性(需要改设置)

<constant name="struts.ognl.allowStaticMethodAccess" value="true"></constant>struts.xml中修改

<s:property value="@全类名@方法或属性"/>

6.投影

users为set集合

<s:property value="users.{?#this.age==1}.{0}"/>

<s:property value="users.{^#this.age>1}.{age}"/> age大于1集合中的第一个元素

<s:property value="users.{$#this.age>1}.{age}"/> age大于1集合中的第后一个元素

<s:property value="users.{$#this.age==1}.{age}==null"/> 判断集合是否为空

两者都可以但是第二个更明确。

name:<s:property value="name"/><br>
name:<s:property value="user.name"/><br>

set标签

<s:set var="" value=""/> value的type为object,可以用来重命名

如:在浏览器中地址栏中输入...&age=-8

<s:set var="age" value="#parameters.age[0]"/>

<s:if test="#age<0">wrong yong!</s:if>

<s:set var=”includepage” value=”'/index.html'” />

<s:property value=”#includepage” />

<s:include value="#includepage" /> include标签value的type是字符串类型,"#includepage" 在解析的时候会被解析成字符串

<s:include value="%{#includepage}" />这一个加上%{}就会被当做ognl表达式

二、控制标签

if标签

<s:if test=""></s:if> test的type是布尔型 boolean

iterator标签

遍历集合:
<s:iterator value="{'1','2','3'}">
<s:property/>
</s:iterator>
<br>
自定义变量:
<s:iterator value="{'aa','bb','cc'}" var="w">
<s:property value="#w.toUpperCase()"/>
</s:iterator>
<br>
遍历map
<s:iterator value="#{'a':'A','b':'B','c':'C'}">
<s:property value="key"/>|<s:property value="value"/>
</s:iterator>

使用status

使用status <br>
<s:iterator value="{'aa','bb','cc'}" status="status">
<s:property/>
遍历过的总数:<s:property value="#status.count"/><br>
当前遍历的的索引位置:<s:property value="#status.index"/><br>
当前是奇数?:<s:property value="#status.even"/><br>
当前是偶数?:<s:property value="#status.odd"/><br>
当前是第一个元素?:<s:property value="#status.firt"/><br>
当前是最后一个元素?:<s:property value="#status.last"/>
<hr>
</s:iterator>

subset标签

注:从例子可以看出定义list和map的差别
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: