Struts2标签总结

在这里总结一下Struts2标签

一:常用的标签

 1, if……elseif……else,用来控制选择输出的标签;

<span style="font-size:18px;"><html xmlns="http://www.w3.org/1999/xhtml">

<head>

<title>s:if标签测试</title>

</head>

<body>

<!-- 在Stack Context中定义一个age属性,其值为29 -->

     <s:set name="age" value="29"/>

<!-- 如果Stack Context中的age属性大于60 -->

      <s:if test="#age>60"> 老年人  </s:if>

<!-- 如果Stack Context中的age属性大于35 -->

      <s:elseif test="#age>35">  中年人  </s:elseif>

<!-- 如果Stack Context中的age属性大于15 -->

      <s:elseif test="#age>15"> 青年人  </s:elseif>

      <s:else> 少年 </s:else>

</body></html></span>

2.append:用于将多个集合拼接成一个新的集合:

<span style="font-size:18px;"><html xmlns="http://www.w3.org/1999/xhtml"> 

<head> 

<title>使用s:append标签拼接集合和Map</title>

</head>

<body>

<!-- 使用append将List和Map集合拼接在一起新集合实际上是Map集合,其名字为newList -->

<s:append var="newList">

<s:param value="#{'Java':'ljh',  'C#':'lsz'}" /> 

<s:param value="#{'0629',  '0404'}" /> 

</s:append> 

<table border="1" width="280"> 

<!-- 使用iterator迭代newList集合 -->

<s:iterator value="#newList" status="st"> 

<tr <s:if test="#st.odd">  style="background-color:#bbbbbb"</s:if>>

       <td><s:property value="key"/></td> 

       <td><s:property value="value"/></td>

</tr> </s:iterator>  </table>  </body>  </html>  </span>

3.generator:是一个字符串解析器,用于将一个字符串解析成一个集合;

<span style="font-size:18px;"><html xmlns="http://www.w3.org/1999/xhtml">

<head>

<title>使用s:generator生成集合</title>

</head>

<body>

<table border="1" width="240">

<!-- 使用generator标签将指定字符串解析成Iterator集合

在generator标签内,得到的List集合位于ValueStack顶端 -->

<s:generator val="'Java  ,C#,  C++'" separator=",">

<!-- 没有指定迭代哪个集合,直接迭代ValueStack顶端的集合 -->

<s:iterator status="st">

<tr <s:if test="#st.odd">

style="background-color:#bbbbbb"</s:if>>

<td><s:property/></td>

</tr>

</s:iterator>  </s:generator>

</table>

</body>

</html></span>

4.iterator:是一个迭代器,用于将集合迭代输出,这个比较实用

5.merge:也是用于将多个集合拼接成一个新的集合,但是append不同。append是将集合依次排列进行拼接。merge是第一个集合的一个,第二集合的第一个。。。。。第一集合的第二个,第二集合的第二个。。

<span style="font-size:18px;"><html xmlns="http://www.w3.org/1999/xhtml">

<head>

<title>使用s:merge标签迭代Map</title>

</head>

<body>

<s:merge id="newList">

     <s:param value="#{'Java':'ljh', 'C#':'lsz'}" />

    <s:param value="#{'0629', '0404'}" />

</s:merge>

 

<table border="1" width="320">

       <s:iterator value="#newList" status="st">

              <tr <s:if test="#st.odd">style="background-color:#bbbbbb"</s:if>>

                  <td><s:property value="key"/></td>

                 <td><s:property value="value"/></td>

             </tr>

     </s:iterator>

</table>

</body>

</html></span>

6.sort:这个标签用于将集合进行排序;

<span style="font-size:18px;"><html xmlns="http://www.w3.org/1999/xhtml">

<head>

<title>使用s:sort对集合元素进行排序</title>

</head>

<body>

<!-- 定义一个Comparator实例 -->

<s:bean var="mycomparator" name="org.ljh.app.util.MyComparator"/>

<!-- 使用自定义的排序规则对目标集合进行排序 -->

<s:sort source="{'Java','C#','C++','Ajax','XML'} comparator="#mycomparator var="sortedList"/>

输出page范围的sortedList属性:<br/>

${pageScope.sortedList}

<table border="1" width="300">

<!-- 迭代page范围内的sortedList属性 -->

<s:iterator status="st" value="#attr.sortedList">

<tr <s:if test="#st.odd">

style="background-color:#bbbbbb"</s:if>>

<td><s:property/></td>

</tr>

</s:iterator>

</table>

</body>

</html></span>

 

7.subset:这个标签用于截取集合的部分元素,形成新的子集合。

  • <span style="font-size:18px;"><html xmlns="http://www.w3.org/1999/xhtml">
  • <head>

    <title>使用s:subset标签截取集合元素</title>

    </head>

    <body>

    <!-- 定义一个Decider Bean -->

    <s:bean var="mydecider" name="org.ljh.app.util.MyDecider"/>

    <!-- 使用自定义的Decider实例来截取目标集合,生成子集

    指定var属性,将生成的Itertor放入pageScope中 -->

    <s:subset source="{<span style="font-family: SimSun; ">'Java'</span></span><pre name="code" class="html">

    <span style="font-size:18px;"> ,'C#'  ,'C++' ,'Ajax' ,'XML'</span></pre><span style="font-size:18px;">}" decider="#mydecider"var="newList"/>

    直接输出page范围的newList属性:

    <br/>${pageScope.newList}<table border="1" width="240"><!-- 迭代page范围内的newList属性 -->

    <s:iterator status="st" value="#attr.newList"><tr <s:if test="#st.odd">style="background-color:#bbbbbb"</s:if>><td><s:property/></td></tr></s:iterator></table></body></html></span>

  • <span style="font-size:18px;">//用户自定义的Decider类,实现了SubsetIteratorFilter.Decider接口
  •  

    public class MyDecider

    implements SubsetIteratorFilter.Decider  {

    //实现Decider接口必须实现的decide方法,

    //该方法决定集合中的元素是否被选入子集

    public boolean decide(Object element) throws Exception {

    String str = (String)element;

    //如果集合元素(字符串)中包含Java EE子串,即可被选入子集

    return str.indexOf("Java") > 0; 

    }

    }

    </span>

    二:数据标签,自我感觉数据标签用得不是很多:

    action标签,可以允许在jsp页面中直接调用Action,在调用Action的时候,可以指定需要被调用的Action的name和namespace。

    如果指定了executeResult参数的属性值为true,该标签会Action的处理结果(视图资源)包含到本页面中。

    使用action标签指定属性有:

    id: 可选属性,作为该Action的引用ID

    name:必选属性,指定调用Action

    namespace:可选属性,指定该标签调用Action所属namespace

    executeResult:可选属性,指定是否将Action的处理结果包含到本页面中.默认值为false,不包含.

    <s:actionname="actionTag!default" executeResult="true"namespace="/generic/dataTag">

    <paramname="username" value=" "/>给action属性复制

    <paramname="email" value=" "/>

    </s:action>

    bean 实例化一个javabean 使用Param传入属性 (get/set)

    name 实例化的javabean的实现类

    var可选 指定则实例放入栈的上下文 允许用var直接使用

    注意:bean标签内创建javabean实例位于栈顶,bean结束移除值栈,除非指定var则通过上下文访问

     

    date格式化输出日期,指定日期与当天日期的时间差

    formart 指定格式格式日期 注意:不欲nice同时指定,如果同时指定。则忽略formart

    nice 是否指定日期与当前日期差值

    name必填 格式化的日期值

    var 对象放入值栈,在date结束可以通过该属性的值引用

    <constanname="sruts.custom.i18n.resources"value="ApplicationResources" />

    <s:datename="#date" formart="yyyy年MM月dd日"/>

     

    debug标签:

    用于辅助调试.在页面上生成超链接,可以查看值栈,和StackContext中所有信息

    id 钙元素的一个引用id

     

    include:讲一个jsp或者servlet包含到当前页面

    value 包含的JSP或Servlet。

    可以指定多个param子标签传参

     

    param标签:为其它标签提供参数

    name设置的参数的名字 (set) value设置的参数的值

    用法①<paramname="color">

    ②<paramname="color" value=" 'color' "/>

     

    push:将某个值放到值栈的栈顶

    value必填:指定放入值栈的栈值!但是只在push标签内,一旦超出,刚刚放入的对象立即被移除

    用法:

    <s:pushvalue="#session.user">

    <s:property value="username">

    <s:property value="sex">

    <s:property value="emai">

    </s:push>

     

    set:用于将某个只放入指定范围内

    定义一个新变量。将已有值放入新变量。并放入指定范围

    value 指定一个表达式,计算的结果赋变量,如果没有指定value属性,默认将栈顶对象赋给变量。

    var 指定该属性,改值放入到值栈中

    scope指定新变量防止的范围,可选application,session request page action(默认) 如果指定为action放入request并放入action值栈

    name变量名字

     

    i18n text标签 支持国际化信息

    i18n将资源包放入值栈 name资源属性名字 指定资源包的基名

    text从资源包中获取信息 title 获取键为title的消息

    通过i18n放入的资源包只能在标签体内访问

    text可以单独使用。首先查找资源包的基名与调用action类名相同的资源包,意味着,可以在action类所在的包中创建与Action类名相同的的资源文件,可以嵌套param指定消息文本的参数,顺序对应参数索引顺序

    <s:i18nname="AppliactionResources">

    <s:textname="title"/> name资源属性名字 id指定属性,文本内容不会输出,而是保存在值栈中,在text结束后,可以通过属性的值来引用

    </s:i18n>

     

    public class TextTagAction extends ActionSupport{} 《topic-21》

     

    url标签用于创建URL地址,定义param附加请求参数

    action value 指定生成URL的Action和URL。前一个会附加.action。如果两个都没有则以当前地址为地址值

    achor 可选 指定url的锚点

    encode 可选 对指定参数进行编码 不支持cookie改写url支持session

    escapeamp 是否将&转义为&amp

    var 将链接值放入到值栈

    includeContext是否将当前上下文包含在URL地址

    includeParams是否包含请求参数,改属性值只能为none,getall

    method 指定使用action的方法

    namespace指定action所属的命名空间

    portletmode指定portle模式

    scheme指定url使用的协议

     

     

    property标签,用于输出值栈中的对象的属性值

    value指定要输出的对象属性 没有则输出栈顶

    default 可选 value为null输出改值

    escape 是否专一输出内容中的html

     

     

        三,表单标签,这个就是form下的Struts2提供的标签,供界面显示用的,其实用的更少,一般情况下,我们都会拿easy-ui,dwz等一些专门做界面的框架进行替换。其实说简单一点就像HTML里边的各种标签,这里不再进行赘述,用的时候我们上网上查即可,这里提供网上的一些,大家可以看下:

    Struts2常用表单标签

     

    四,非标单标签,主要用于生成一些非表单的可视化元素,例如tab页面,输出HTML页面的树形结构等,当然也用来显示Action里封装的信息。简单介绍一下:

    标签名

    含义

    actionerror

    如果Action实例的getActionErrors()方法返回不为null,则该标签负责输出该方法的返回的信息。

    actionmessage

    和上边一样,用于返回GetActionMessage()的信息

    component

    用于生成一个自定义组件。可以利用写好模版,主题等

    fielderror

    如果Action实例存在表单域的类型转换错误,校验错误,该标签负责输出这些错误信息。

    最后编辑于
    ©著作权归作者所有,转载或内容合作请联系作者
    • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
      沈念sama阅读 202,607评论 5 476
    • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
      沈念sama阅读 85,047评论 2 379
    • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
      开封第一讲书人阅读 149,496评论 0 335
    • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
      开封第一讲书人阅读 54,405评论 1 273
    • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
      茶点故事阅读 63,400评论 5 364
    • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
      开封第一讲书人阅读 48,479评论 1 281
    • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
      沈念sama阅读 37,883评论 3 395
    • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
      开封第一讲书人阅读 36,535评论 0 256
    • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
      沈念sama阅读 40,743评论 1 295
    • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
      茶点故事阅读 35,544评论 2 319
    • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
      茶点故事阅读 37,612评论 1 329
    • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
      沈念sama阅读 33,309评论 4 318
    • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
      茶点故事阅读 38,881评论 3 306
    • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
      开封第一讲书人阅读 29,891评论 0 19
    • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
      开封第一讲书人阅读 31,136评论 1 259
    • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
      沈念sama阅读 42,783评论 2 349
    • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
      茶点故事阅读 42,316评论 2 342

    推荐阅读更多精彩内容

    • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
      卡卡罗2017阅读 134,579评论 18 139
    • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
      子非鱼_t_阅读 31,556评论 18 399
    • 上篇文章我们介绍struts2标签库中的控制标签的基本使用和部分原理,本篇文章接着了解下标签库中有关数据标签的使用...
      Single_YAM阅读 1,795评论 0 4
    • 前面几篇文章我们介绍了有关struts2的基本内容,简单理解了整个框架的运作流程。从本篇开始我们逐渐了解和使用st...
      Single_YAM阅读 822评论 0 5
    • 回顾 我们回顾一下前面两节的内容: init进程创建了SurfaceFlinger服务进程,然后将SurfaceF...
      我叫王菜鸟阅读 310评论 0 0