转载地址:http://chinagdvea.iteye.com/blog/994784
ActionContext包含的对象
{
ValueStack 包含当前请求的应用程序的特定领域的所有数据 (默认OGNL的跟对象)
parameters 当前请求中请求参数的映射 (表单参数)
application 应用程序作用域的属性映射
session 会话作用域的属性的映射
attr 按照页面.请求.回话.应用程序作用域的顺序.返回第一个出现的属性
request 请求作用域的属性的映射
}
#session['user'] 用#作用域['属性名'] 表示在ActionContext的Session域中查找user #user表示ActionContext中的user
OGNL表达式指向ValueStack栈中最高层的动作属性
一.数据标签
1.property标签 属性: value default escape
为property标签设置default字符串 <s:property value="stringOne" default="defaultString" /> value值会在ValueStack上查找名叫stringOne的属性,若找不到,则默认返回字符
串"defaultString"
在标签中强制使用OGNL表达式解析 <s:property value="stringOne" default="%{myDefault}" /> value值会在ValueStack上查找名叫stringOne的属性,若找不到,则默认返回ValueStack上的
myDefault属性
2.set标签 属性: name value scope 使name指向新引用valueff8
<s:set name="username" value="user.username" scope="application" /> hello, <s:property value="#application['username']" />
此处将 username 的值设置为 user.username 并制定起作用域在application上
3.push标签 属性 value
<s:push value="user" >
<s:property value="username" /> push标签将value值(user)放置ValueStack顶端.push标签内的内容将直接饮用user的属性而省略user字段.如
</s:push> property将直接显示 user.username 属性
4.bean标签 属性 name, var
<s:bean name="com.v.Test" var="invocation" > 使用了var,则在ActionContext上创建一个命名饮用,不用var,则直接将bean至于ValueStack顶端,可以直接引用他的属性和方法
<s:param name="number" value="10" />
</s:bean>
public class Test {
int number;
public Test() {
System.out.println(number);
}
}
param标签用于传入参数,property标签用于获取参数
5.action标签 属性 name, namespace, var, executeResult, flush, ignoreContextParams
var:动作引用名
flush:boolean 是否在标签结尾刷新写出缓冲
executeResult:boolean 是否排除动作的结果
ignoreContextParams: boolean 动作被调用时是否包含请求参数
<s:action name="TargetAction" executeResult="true" /> 此处排除SUCCESS结果
<s:property value="#request.dataFromSecondAction" /> 从request中获取dataFromSecondAction属性
<action name=TargetAction" class="com.v.TargetAction">
<result>/results/Target.jsp </result>
</action>
在TargetAction的execute()方法中
request.put("dataFromSecondAction", "myData");
return SUCCESS;
二.控制标签
1.iterator标签 属性 values status
<s:iterator value="users" status="isStatus" > status:以itStatus为引用名在ActionContext中创建实例,用于获取name集合中的各种信息,如大小.索引等等
<s:property value="#isStatus.counts" />
<s:property value="here" />
</s:iterator >
输出 1 Mary here
2 Jack here
2.if 和 else标签 属性 test(判定条件)
<s:if test="user.age > 18"> he's an adult </s:if>
<s:elseif test="user.age < 18"> he's not an adult </s:if>
<s:else >he's 18</s:else>
三.其他标签
1.URL标签 属性 value action var includeParams includeContext encode scheme
value:URL的值,自定的URL
action:URL指向的动作
var:自定义URL引用
includeParams:指定当前请求参数是否传递到新URL中,有all, get, none三种
includeContext:若为true,URL使用程序的Context为前缀
scheme:指定协议
URL = <s:url action="IteratorTag" var="myURL" >
<s:param name="id" value="9" />
</s:url >
<a href='<s:property value="#myURL" />'>Click Me </a>