zoukankan      html  css  js  c++  java
  • Struts2作用域和标签库(转)

    转载地址: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> 

  • 相关阅读:
    day04 列表和元组
    Python2和Python3的区别
    Ruby学习笔记2 : 一个简单的Ruby网站,搭建ruby环境
    Patrick Hughes
    Ruby学习笔记1 -- 基本语法和数据类型, Class
    Javascript学习笔记5
    php学习笔记1——使用phpStudy进行php运行环境搭建与测试。
    Linux配置和管理msyql命令
    干净win7要做几步才能运行第一个Spring MVC 写的动态web程序
    The difference between Spring Tool Suite and Spring IDE
  • 原文地址:https://www.cnblogs.com/guanghuiqq/p/2729044.html
Copyright © 2011-2022 走看看