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

Struts2作用域和标签库

2013-09-24 16:05 447 查看
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> 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: