帖子地址:http://blog.163.com/yang_live/blog/static/215176012201302441158505/
1,访问Action值栈中的普通属性:
<s:property value="attrName"/>
2,访问Action值栈中的对象属性(要有get set方法):
<s:property value="obj.attrName"/>
<s:property value="obj1.obj2.attrName"/>
3,访问值栈中对象属性的方法
<s:property value="obj.methodName()"/>
4,访问值栈中action的普通方法:
<s:property value="methodName()"/>
5,访问静态方法:
<s:property value="@com.softeem.LoginAction@methodName()"/>
6,访问静态属性:
配置属性文件,允许ognl访问静态方法struts.ognl.allow...=true
<s:property value="@com.softeem.LoginAction@attrName"/>
7,访问Math类的静态方法:
<s:property value="@@min(9,7)"/>
8,访问普通类的构造方法:
<s:property value="new com.softeem.User(2)"/>
9,访问集合:
①list集合对象
<s:property value="listName"/>
②list集合中的某个元素
<s:property value="listName[1]"/>
③list中某个属性的集合
<s:property value="listName.{field}"/>
④list中某个属性集合的特定值
<s:property value="listName.{field}[0]"/>
⑤访问set
<s:property value="setName"/>
⑥访问set中某个元素
<s:property value="setName[0]"/>
⑦访问map
<s:property value="mapName"/>
⑧根据key访问Map中的元素
<s:property value="mapName.username"/>
<s:property value="mapName['username']"/>
<s:property value="mapName[/"username/"]"/>
⑨访问map中所有的key
<s:property value="mapName.keys"/>
10,访问map中所有的values
<s:property value="mapName.values"/>
11,访问map的大小
<s:property value="mapName.size()"/>
12,投影
<s:property value="listName.{?#this.age==1}"/>
<s:property value="listName.{^#this.age>1}"/>
<s:property value="listName.{$#this.age==1}"/>
<s:property value="listName.{$#this.age==1}.{age}==null"/>
[]:<s:property value="[0]"/>值栈中的对象
---------------------------------------
访问action中传过来的对象:<s:property value="user"/>|${user }<br>
访问action中传过来的对象中的属性:<s:property value="user.username"/>|${user.username }<br>
访问action中传过来的对象属性类中的方法:<s:property value="user.getUsername()"/><br>
访问action中传过来的对象中的对象:<s:property value="user.group"/><br>
访问action中传过来的对象中的对象的属性:<s:property value="user.group.gname"/> |
<s:property value="user.group.getGname()"/><br>
访问action中的普通方法:<s:property value="getValue()"/><br>
访问其他类中过的静态方法:<s:property value="@com.softeem.pojos.User@printUser()"/><br>
取到Math类中的方法:<s:property value="@@max(12,45)"/><br>
访问User类的构造方法:<s:property value="new com.softeem.pojos.User()"/><br>
访问list:<s:property value="users"/><br>
获取list的长度:<s:property value="users.size()"/><br>
取到list中第一个元素:<s:property value="users.get(0)"/>|<s:property value="users[1]"/><br>
取到list中username属性的集合:<s:property value="users.{username}"/><br>
根据key取到map中的元素:<s:property value="userMap.张三"/>|
<s:property value="userMap['三毛']"/><br>
⑨访问map中所有的key:<s:property value="userMap.keys"/><br>
10,访问map中所有的values:<s:property value="userMap.values"/><br>
11,访问map的大小:<s:property value="userMap.size()"/><br>
12,投影:<s:property value="users.{?#this.username=='张三'}.{password}"/><br>
13,取到list中满足条件的开头的一个元素的密码:<s:property value="users.{?#this.username='张三'}.{password}[0]"/><br>
14,取到list中满足条件的最后的一个元素的密码:<s:property value="users.{$#this.username='张三'}.{password}"/><br>
15,<s:property value="users.{$#this.username=='admin'}.{group}==null"/><br>
16,从栈顶开始取,一直取到指定的位置(0表示栈底):<s:property value="[1]"/>
<s:debug></s:debug>
相关推荐
接下来,我们将通过几个具体的示例来详细了解 `<s:if>` 标签的使用方法。 ##### 示例一:简单的条件判断 ```html <s:set name="country" value="China" /> <s:if test="%{#country == 'China'}"> This is China! ...
<s:property value="ognl表达式" /> ``` 其中,`ognl表达式`可以是一个对象名、属性名或完整的OGNL表达式。 3. **访问Action属性**: 如果你想显示Action类的一个属性,可以直接使用属性名,例如: ```jsp <s...
在Struts2中,这可以通过在Action类中定义相应的查询参数并使用OGNL表达式来实现。例如,Action类可能有如下的属性: ```java private String username; private int age; // getters and setters ``` 然后在JSP...
4. 访问值栈中对象的普通方法:<s:property value="cat.friend.say().length()"/> 5. 访问值栈中action的普通方法:<s:property value="execute()"/> 访问静态方法和属性 6. 访问静态方法:<s:property value="@...
- 在JSP页面上,使用OGNL标签显示和处理数据,如`<s:if test="%{user.isAdmin}">管理员界面</s:if>`。 通过理解并熟练运用OGNL表达式和相关标签,开发者可以更高效地构建Struts2应用程序,实现数据的灵活绑定和...
同时,可以使用`<s:choose>`, `<s:when>`, 和 `<s:otherwise>`标签来创建类似于switch-case的结构: ```jsp <s:choose> <s:when test="%{status == 'active'}"> <!-- 活动状态的行内容 --> </s:when> <s:when ...
<s:property value="key"/>=<s:property value="value"/><br> </s:iterator> ``` 这段代码展示了如何使用OGNL遍历一个Map,并打印出键值对。 通过上述介绍可以看出,OGNL作为一种强大的表达式语言,在Struts2...
例如,`<s:property>`标签可以用来输出对象的属性值,其value属性可以是OGNL表达式,如`<s:property value="user.name" />`。 标签库还包括其他有用的标签,如`<s:set>`用于设置变量,`<s:if>`和`<s:else>`进行条件...
- 在第29行、31行和33行,`<s:property>`标签使用OGNL表达式`#request.req`、`#session.sess`和`#application.app`分别访问了request、session和application范围内的属性值。这里的`#`符号标识了表达式的开始,`...
在示例代码中,`<s:property>`标签使用OGNL表达式`#request.req`、`#session.sess`和`#application.app`分别获取了Request、Session和Application范围内的属性值。这展示了OGNL如何灵活地访问不同级别的数据。 其次...
`<s:property>`用于在页面上输出ValueStack或ActionContext中的数据,可以指定`value`属性执行OGNL表达式来获取数据。而`<s:set>`则用于创建变量并保存到特定范围,如`<s:set var="myVar" value="#parameters.score...
1. `<s:property>`:这个标签用于输出对象的属性值,它内部可以包含一个OGNL表达式。例如,`<s:property value="user.name" />`将输出User对象的name属性。 2. `<s:set>`:这个标签用于设置变量,可以将值存储到...
2. **条件判断与循环**:利用OGNL,可以在Struts2的标签库中实现复杂的逻辑处理,比如`<s:if test="someCondition">...</s:if>`这样的条件判断语句。 3. **动态方法调用**:OGNL支持静态方法的调用,这使得开发者...
- **请求作用域** (`#request`): 在 JSP 页面或 Struts2 动作中,可以直接使用 `<s:property value="#request.req"/>` 来获取请求作用域内的 `req` 变量的值。 - **会话作用域** (`#session`): 同样地,`<s:property...
除了属性访问,OGNL还支持动态方法调用,如`<s:property value="%{user.getName()}" />`。这允许我们在不改变视图层代码的情况下添加新的方法。 **6. 输入流处理与`inputStream`标签** 在Struts2中,`inputStream`...
<p>名称:<s:property value="name"/></p> </s:iterator> ``` - **说明**:遍历一个集合或数组,并对每个元素执行标签体内的内容。 25. **`<s:label>`** - 显示标签。 - **示例**: ```jsp <s:label value=...
这篇文档详细讲解了 `s:iterator` 标签的使用方法以及 OGNL(Object-Graph Navigation Language)的用法。 1. **s:iterator 标签的基本属性** - `value`:这个属性是必需的,用于指定要迭代的集合。它可以是一个...
1. `<s:bean>` - 类似于Struts1中的JavaBean操作,但在Struts2中使用较少,因为Struts2更倾向于使用OGNL表达式来访问对象。 **C组标签:** 1. `<s:checkbox>` - 创建复选框,可以绑定到Action的属性。 2. `<s:...
OGNL表达式通常结合Struts2的标签一起使用,比如使用 `<s:property value="expression"/>` 来展示数据。在使用过程中,需要注意#、%和$这三个符号的正确使用: - **#**:通常用于表示OGNL表达式,在Struts2中作为...
<s:property value="1>2 && 2<3" /> ``` #### 三、Struts2 标签详解 Struts2 提供了一套丰富的标签库,可以帮助开发者更高效地开发 Web 应用。 1. **引入 Struts2 标签库**: - 在 JSP 页面中使用 `<%@ taglib...