zoukankan      html  css  js  c++  java
  • struts2一些概念介绍和标签的使用

    依赖注入

    模块包含

    struts.xml的模块包含格式

    <include file="xx.xml" >

    OGNL  

    对象导航语言   有个超大的好处就是根据对象访问属性,避免混乱。

     OGNL标签分为:data tags和 control  tags

    一、数据标签

    property标签

    获取值栈中的普通对象

    <s:property   value=""/>

    是访问哪些有get和set的属性的方法

    name:<s:property value="name"/><br>
    name:<s:property value="user.name"/><br>

    访问值栈中的普通对象的普通方法

       1.password是String类型

       password:<s:property   value="password.length()"/><br>

       2.实体类中自定义对象的普通方法

    eat:<s:property   value="person.eat()"/><br>

       3.Action类中定义的普通方法

    <s:property   value="methodaction1()"/>

       4.访问集合

          1>array  

            和list一样

          2> list

               访问list

               <s:property   value="listname"/>

               访问list某个属性的集合

               <s:property   value="listname.{age}"/>

               访问list某个集合的某特定值

                <s:property   value="listname.{age}[0]"/>或者

                <s:property   value="listname[o].age"/>更容易理解和记忆

          3>set

              和list一样

          4>map

                     访问map单个元素

                     <s:property   value="mapname.key"/>或者 <s:property   value="mapname['key']"/>  单引号

                     访问map所有key

                     <s:property   value="mapname.keys"/>

                     访问map所有value

                     <s:property   value="mapname.values"/>

                     访问容器的大小

                      <s:property   value="mapname.size()"/>或者  <s:property   value="mapname.size"/>

    注:什么是普通方法和属性:就是非static的方法和非构造方法和属性

       5.访问静态方法和和属性(需要改设置)

     <constant name="struts.ognl.allowStaticMethodAccess" value="true"></constant>struts.xml中修改

    <s:property   value="@全类名@方法或属性"/>

    6.投影

       users为set集合

       <s:property   value="users.{?#this.age==1}.{0}"/>

       <s:property   value="users.{^#this.age>1}.{age}"/>  age大于1集合中的第一个元素

       <s:property   value="users.{$#this.age>1}.{age}"/>  age大于1集合中的第后一个元素

       <s:property   value="users.{$#this.age==1}.{age}==null"/> 判断集合是否为空

    两者都可以但是第二个更明确。

    name:<s:property value="name"/><br>
    name:<s:property value="user.name"/><br>

    set标签

    <s:set var=""   value=""/>  value的type为object,可以用来重命名

    如:在浏览器中地址栏中输入...&age=-8

          <s:set var="age"   value="#parameters.age[0]"/>

          <s:if test="#age<0">wrong yong!</s:if>

    1. <s:set var=”includepage” value=”'/index.html'” />  
    2.  <s:property value=”#includepage” />
    3. <s:include  value="#includepage"  />     include标签value的type是字符串类型,"#includepage" 在解析的时候会被解析成字符串
    4. <s:include  value="%{#includepage}"  />这一个加上%{}就会被当做ognl表达式

     二、控制标签

    if标签 

     <s:if test=""></s:if>  test的type是布尔型 boolean

     iterator标签

    遍历集合:
    <s:iterator value="{'1','2','3'}">
    <s:property/>
    </s:iterator>
    <br>
    自定义变量:
    <s:iterator value="{'aa','bb','cc'}" var="w">
    <s:property value="#w.toUpperCase()"/>
    </s:iterator>
    <br>
    遍历map
    <s:iterator value="#{'a':'A','b':'B','c':'C'}">
    <s:property value="key"/>|<s:property value="value"/>
    </s:iterator>

    使用status

    使用status <br>
    <s:iterator value="{'aa','bb','cc'}" status="status">
    <s:property/>
    遍历过的总数:<s:property value="#status.count"/><br>
    当前遍历的的索引位置:<s:property value="#status.index"/><br>
    当前是奇数?:<s:property value="#status.even"/><br>
    当前是偶数?:<s:property value="#status.odd"/><br>
    当前是第一个元素?:<s:property value="#status.firt"/><br>
    当前是最后一个元素?:<s:property value="#status.last"/>
    <hr>
    </s:iterator>

     subset标签

    注:从例子可以看出定义list和map的差别

  • 相关阅读:
    iOS高仿微信悬浮窗、忍者小猪游戏、音乐播放器、支付宝、今日头条布局滚动效果等源码
    iOS宇宙大战游戏、调试工具、各种动画、AR相册、相机图片编辑等源码
    android支付宝首页、蚂蚁森林效果、视频背景、校园电台、载入收缩动画等源码
    iOS天气动画、高仿QQ菜单、放京东APP、高仿微信、推送消息等源码
    android高仿抖音、点餐界面、天气项目、自定义view指示、爬取美女图片等源码
    Java_WebKit_ZC01
    Java_WebKit
    ZC_RemoteThread
    运行jar_测试代码
    运行jar_命令
  • 原文地址:https://www.cnblogs.com/keyi/p/6237466.html
Copyright © 2011-2022 走看看