Struts2作用域和标签库

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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值