5. Struts 2 标签

Struts 2 标签

  • s:property > 和 ognl 表达式在jsp页面获取值栈数据
  • s:iterator > 获取list集合,并且遍历
  • s:debug > 查看值栈的标签

表单标签

html 标签

* form 标签: **action** | **method** | **enctype** |
* 输入项 input :
    *  text > 文本
    * password > 密码
    * redio > 单选按钮
    * checkbox > 复选按钮
    * hidden > 隐藏项
    * file > 文件上传
    * button > 普通按钮
    * submit > 提交按钮
    * image > 图片提交
    * reset > 重置
* selsect > 下拉输入项
* textarea > 文本域

Struts 标签

代码

<s:form>
    <!-- 普通输入框 -->
    <s:textfield name="uname" label="姓名"></s:textfield>
    <!-- 密码输入框 -->
    <s:password name="password" label="密码"></s:password>
    <!-- 单选输入框 1 -->
    <s:radio name="sex1" list="{'男','女'}" label="性别"></s:radio>
    <!-- 单选输入框 2 -->
    <s:radio name="sex2" list="#{'nan':'男','nv':'女'}" label="性别"></s:radio>
    <!-- 复选框 -->
    <s:checkboxlist name="college" list="{'幼儿园','小学','中学'}" label="学历"></s:checkboxlist>
    <!-- 下拉菜单 -->
    <s:select name="love" list="{'吃饭','运动','瑜伽'}" label="爱好"></s:select>
</s:form>

展示样式

这里写图片描述

问题 :
表单加上简单属性主题后
布局就会很奇怪
<s:form theme="simple">
这里写图片描述

控制标签

if和else

  • 用于控制选择输出的标签
  • test=''表达式''
<!-- 如果 -->
<s:if test="%{false}">
    <div>Will Not Be Executed</div>
</s:if>
<!-- 否则 如果 -->
<s:elseif test="%{true}">
    <div>Will Be Executed</div>
</s:elseif>
<!-- 否则 -->
<s:else>
    <div>Will Not Be Executed</div>
</s:else>

iterator

  • 这是一个迭代器.


  • 可选 : value="指定集合" 如果没有指定集合,默认为ValueStack栈顶的集合
  • 可选 : var="集合元素ID"
  • 可选 : status="指定名称" 通过该指定名称获取相关参数 * int getCount();返回当前迭代了几个元素 * int getIndex();返回当前迭代的索引 * boolean isEven();返回索引是否为偶数 *
    boolean isFirst();返回是否为第一个元素 * boolean isLast();返回当前是否为最后一个元素 *
    boolean isOdd();返回是否为奇数

调用示例: #指定名称.odd

<!-- List集合例子 -->
<s:iterator value="{'雷鸣','韦康','中之一'}" var="name" status="par">
  <!-- 返回当前索引 -->
  <s:property value="#par.index"/>
  <!-- 返回当前值 -->
  <s:property value="name"/>
</s:iterator>
<!-- Map集合例子 -->
<s:iterator value="#{'学号1':'雷鸣','学号2':'韦康','学号3':'中之一'}" status="par">
  <!-- 返回当前索引 -->
  <s:property value="par.index"/>
  <!-- 返回当前key值 -->
  <s:property value="key'"/>
  <!-- 返回当前value值 -->
  <s:property value="value'"/>
</s:iterator>

sort

  • 对集合进行排序

subset

  • 截取集合的部分元素,形成新的集合;
  • 可选count指定子集合中的元素数量,默认为源集合的数量;
  • 可选source(英语意思:源头)指定源集合
  • 可选start从第几个元素开始截取,默认为0;
  • 可选decider指定有开发者自己决定是否选中钙元素;
  • 可选var如果指定了该属性,则将生成的Iterator对象设置为page范围的属性

merger

  • 将多个集合合并为一个集合
    如果有两个列表A和B的值,A1,A2和B1,B2。合并列表,会给出A1,B1,A2,B2。
<!-- 声明合并的标签 -->
<s:merge var="myMergedIterator">
     <!-- 声明内容 -->
     <s:param value="%{myList1}" />
     <s:param value="%{myList2}" />
     <s:param value="%{myList3}" />
</s:merge>
<!-- 迭代新的集合 -->
<s:iterator value="%{#myMergedIterator}">
     <s:property />
</s:iterator>

append

  • 将多个集合合并为一个集合
  • var="新集合名称"确定一个新的集合名称
  • <s:param value="需要合并的集合名称"> 声明需要合并的名称

如果有两个列表A和B的值A1,A2和B1,B2。合并列表,会给你的A1,A2,B1,B2,而append 名单,会有A1,A2,B1,B2。

<s:append var="myAppendIterator">
     <s:param value="%{myList1}" />
     <s:param value="%{myList2}" />
     <s:param value="%{myList3}" />
</s:append>
<s:iterator value="%{#myAppendIterator}">
     <s:property />
</s:iterator>

generator

  • 将指定字符串按照指定分隔符,生成一个集合
  • 可选count该属性指定元素总数
  • 必填separator指定分隔符(英语意思:分割器)
  • 必填val指定被解析的字符串
  • 可选var指定生成对象名,并且会放入StackContext中
<!-- 创建数组 -->
<s:generator val="%{'Violet,Indigo,Blue,
         Green,Yellow,Orange,Red '}" count="7" 
         separator=",">
<!-- 迭代 -->
   <s:iterator>
      <s:property /><br/>
   </s:iterator>
</s:generator>  

数据标签

  • 数据标签主要用于提供各种数据访问相关的功能,包含显示一个Action里的属性,以及生成国际化输出等功能

action

  • 该标签用于在jsp页面直接调用一个Action,通过制定的executeResult参数,还可以将该Action的处理结果包含到本页面中来.
  • 可选 var 一旦定义了,该Action将会被放入StackContext中
  • 必填 name 通过指定该标签调用哪个Action
  • 可选 namespace 该属性指定该标签调用哪个Action 坐在的那么namespace
  • 可选 executeResult 指定该属性是否要将Action的处理返回到本页面,默认为false,即不包含.
  • 可选 ignoreContextParams 指定该页面中的请求参数是否需要转入调用的Action.默认为false , 即将本页面的请求参数传入被调用的Action.
下面调用第一个Action并将结果包含到本页面中<br/>
<s:action name="tag1" executeResult="true"/>
<hr/>
下面调用第二个Action,并将结果包含到本页中.<br/>
<s:action name="tag2" executeResult="true"/>
<hr/>
下面调用第三个Action,不将结果包含到本页<br/>
<s:action name="tag2" executeResult="false"/>

bean

  • 该标签用于创建一个JavaBean实例.可以在该标签体内使用<param.../>标签为该JavaBean实例传入属性.
    • 必填name该属性指定实例化的JavaBean的实现类.
    • 可选var 如果指定了该属性,则该JavaBean实例会被存放到StackContext中,的requestScope中.
      创建实例

public class Person{
    private String name;
    private int age;
    ...(setter和getter方法)...
}
标签创建实例 **1**
<!-- 使用bean标签创建一个Person类的实例 -->
<s:bean name="com.bean.Person">
    <!-- 使用param标签为Person实例传入参数 -->
    <s:param name="name" value="雷鸣"/>
    <s:param name="age" value="26"/>
    <!-- 因为在bean标签内,Person实例位于ValueStack的栈顶,所以可以直接访问 -->
    Person实例的name为:<s:property value="name"/><br/>
    Person实例的age为:<s:property value="age"/>
</s:bean>
**2**
<!-- 使用bean标签创建一个Person类的实例,为其制定var -->
<s:bean name="com.bean.Person">
    <!-- 使用param标签为Person实例传入参数 -->
    <s:param name="name" value="雷鸣"/>
    <s:param name="age" value="26"/>
    <!-- 因为在bean标签内,Person实例位于ValueStack的栈顶,所以可以直接访问 -->
    Person实例的name为:<s:property value="name"/><br/>
    Person实例的age为:<s:property value="age"/>
</s:bean>

date

  • 用于格式化输出一个日期
  • 可选format : 根据该属性指定的格式来格式化日期
  • 可选nice : true = 输出时差 \ false(默认) = 不输出时差
  • 必填name : 指定要输出的日期值
  • 可选var : 声明名称并放入 requestScope中

bebug

  • 用于在页面生成一个调试连接,点击链接显示ValueStack 和 StackContext的内容
  • 主要用于辅助调试

i18n

  • 用于指定国际化资源文件的baseName

include

  • 用于在jsp页面中包含其他的jsp或servlet资源
  • 必填value : 指定被包含的页面

param

  • 用于设置一个参数,通常是用作bean标签 url标签的子标签
  • 可选name : 指定那个需要设置参数的参数名
  • 可选value : 指定需要修改的参数值

push

  • 用于将某个值放入ValueStack的栈顶
  • 必填value : 指定放到栈顶的值
<s:push>
    <s:property value="name"/>
    <s:property value="age"/>   
</s:push>

set

  • 用于设置一个新的变量,并放入指定的位置
  • 可选scope : 指定新变量的存放范围application session request page action
  • 可选value : 指定将赋给变量的值,如果没有则自动将ValueStack的栈顶值赋给新变量
  • 可选var : 如果指定了该属性,则会放入ValueStack中

text

  • 用于输出国际化信息

url

  • 用于生成一个url
  • 可选 action 指定生成的URL地址为那个action,如果不提供则为value的值
  • 可选 anchor 指定URL的锚点
  • 可选 encode 指定是否需要对参数进行编码,默认为true
  • 可选 escapeAmp 指定是否需要对&符号进行编码,默认为true
  • 可选 forceAddSchemeHostAndPort 指定是否需要在URL的地址强制添加scheme 主机 和 端口.
  • 可选 includeContext 指定是否需要对当前上下文包含到URL地址中
  • 可选 includeParams 指定是否包含请求参数,该属性只能为none |get | all 默认为get
  • 可选 method 指定action的方法
  • 可选 namespace 指定命名空间
  • 可选 portletMode 指定结果页面的portlet模式
  • 可选 scheme 这是scheme属性
  • 可选 value 指定生成URL的地址
  • 可选 var 指定了该属性,则会把连接值直接放入ValueStack中
  • 可选 windowState 指定结果页面的portlet窗口状态

property

  • 用于输出某个值,包括ValueStack StackContext 和 ActionContext中的值
  • 可选default如果输出值为null 则输出该属性的值
  • 可选escape指定是否是escapeHTML代码 默认为true
  • 可选value指定需要输出的属性值,如果没有该属性,默认输出ValueStack栈顶的值

猜你喜欢

转载自blog.csdn.net/luke199257/article/details/80802117