Struts2的标签库

Struts2的标签分为下面几类:

  1. 控制标签
  2. 数据标签
  3. 表单标签
  4. 非表单标签
  5. Ajax标签

其中控制标签与数据标签为普通标签,表单标签、非表达标签与Ajax标签为UI标签。

 Struts 2标签库及其处理类被放在struts2-core-xxx.jar包中。

 要使用Struts2的标签库需在jsp页面中引入

<%@ taglib  prefix="s" uri="/struts-tags" %>

 引入标签库后,在jsp中使用格式为:<s:xxxxx>  其中xxxxx是标签名 

 控制标签

控制标签主要用于流程的控制,实现分支、循环等操作,也可以完成对集合的合并、排序等操作。

if/elseif/else标签

这是三个标签是进行程序分支控制的,其中<s:if>标签可以单独使用,而<s:elseif>和<s:else>标签使用前必须有<s:if>标签,与java中 if 的用法一致。

标签用test属性进行条件判断,其值为boolean类型的表达式。

<s:if test="表达式">
    标签体
</s:if>
<s:elseif test="表达式">
    标签体
</s:elseif>
<s:else>
    标签体
</s:else>

append标签

append标签用来将多个集合对象拼接成一个集合,使用var或id属性指定新集合的名字(一般用var)。

<s:append var="newList">
    <s:param value="{'123', '456', '789'}"/>
    <s:param value="{'as', 'sd'}"/>
</s:append>
<s:iterator value="%{#newList}" id="lst">
    <s:property value="lst"/>
</s:iterator>

用新的名字取拼接后的集合。

generator标签

将指定字符串分割成多个子串,实际是转换成一个List集合,按顺序push到ValueStack中,如此就可以用<s:iterator>遍历。

标签属性:

iterator标签

对集合数据进行迭代遍历。

属性:

merge标签

将多个集合拼接成同一个集合。与append标签的用法相似,区别是二者拼接的结果集合的元素顺序不同。

两个集合进行拼接:{"abc", "def", "ghi"}、{"123", "456", "789"}

append拼接:

  {"abc", "def", "ghi", "123", "456", "789"}

merge拼接:

  {"abc", "123", "def", "456", "ghi",  "789"}

 sort标签

对指定集合元素进行排序,要提供自己的排序规则,即自定义一个实现Comparator的子类,并指定属性。 

subset标签

取出指定集合的子集, 

数据标签

a标签

 构造超链接

action标签

 用来在JSP页面中直接调用Action,其属性可以决定调用Action的name和namespace。若设置executeResult属性为true,则可以直接得到调用Action返回的视图页面。

bean标签

 用于创建一个JavaBean实例,通常与<s:param>标签结合使用,<s:bean>创建实例,<s:param>为该实例传入指定属性,因此指定javaBean必须提供对应的setter方法,要访问属性则提供getter方法。

 若不指定var属性,则该JavaBean实例只能在<s:bean>标签内访问。

date标签

用于输出指定格式的日期 

debug标签

用于输出ValueStack和StackContext中的信息,只有一个id属性,但一般不用。使用时直接将该标签添加到jsp页面中即可。 

i18n标签

用来进行资源绑定,然后将其放入ValueStack中。可以用来加载国际化资源文件,然后用<s:text>标签或在表单中使用key属性访问国际化资源文件。 

include标签

将一个jsp页面包含到该页面,有一个必需的value属性, 指定要包含的jsp页面。

<s:include>标签可以与<s:param>标签结合使用,当包含其他jsp页面时需要指定参数,就可以添加<s:param>将参数值传入,如此传值是用request方式传入,取值是需用request对象取或EL表达式,且<s:param>要指定name属性

<s:include value="two.jsp">
    <s:param name="name" value="jack">
</s:include>

param标签 

 用于为其他标签提供参数,如<s:bean>、 <s:include>

<s:param name="age">10</s:param><s:param name="age" value="10"/>

preperty标签

用于输出ValueStack中对象的属性值,可以使用value属性指定要输出的对象属性。

 

 若不指定value的属性值,则默认会输出ValueStack栈顶的值。

<s:property value="username" default="用户">

push标签

将一个值压入ValueStack的栈顶,可以方便的访问该值。该标签只有一个value属性。

<!-- push压入值栈栈顶,property取值 -->
<
s:push value="user"> <s:property value="firstName"/> <s:property value="lastName"/> </s:push>

set标签

 将某个值放入指定范围内,例如session、request等,其值通过scope属性来指定,scope属性值只能是application、request、session、page和action。

<!--放入action中-->
<s:set var="personName" value="person.name" />
<!--取值-->
<s:property value="#personName" />

text标签

用于输出国际化资源文件信息,jsp页面中用<s:i18n>指定国际化资源文件后,可以用<s:text>标签输入key对应的value。

 注意不能在一个标签中使用<s:text>标签

<!--无效-->
<s:textfield name="lastName" label="<s:text name="person.lastName"/>">

url标签

用于生成URL映射地址, 可以和<s:param>结合使用传入参数。

表单标签

form标签

<s:form>标签用于生成html的form,可以添加action、namespace等属性

 在form标签中一般包含其他表单标签,在提交时将其他表单标签的值作为参数传入服务器。

submit标签

<s:submit>标签可以生成html的提交按钮,用于<s:form>标签中,用于提交表单。

 (不知道为什么,method属性在测试使用中无效)

checkbox标签

创建复选框,等同于<input type="checkbox"/> 

与其他标签不同,value属性值为boolean类型,表示是否选中,fieldValue才是真值。

checkboxlist标签 

<s:checkboxlist>创建多个复选框。

combobox标签

用于创建文本框和下拉列表框的组合,看起来是两个组件,实际只有一个name属性,传入的请求参数为文本框中的值而不是列表框中的值。

doubleselect标签

创建两个相关联的列表框,即第二个列表框会根据第一个列表框的选择而变化(级联)。

file标签

<s:file>标签用于创建一个文件选择框,生成html的<input type="file">标签。

 一般用法:

<s:file name="uploadFile" accept="text/*">

hidden标签

<s:hidden>标签可以创建一个隐藏表单元素,生成html的<input type="hidden"/>,此标签不会显示在页面中,常用于提交表单时传递额外的参数。

<s:hidden name="id" value="%{id}">

inputtransferselect标签

主要用来获取输入转到列表框,或从列表中移除,实际该标签会创建多个表单元素的集合

label标签

 生成html的<label/>标签,XHTML主题下可以生成两个<label/>标签,位于一行的两列,左列起提示作用,右列用于显示Action属性数据;SIMPLE主题下只生成一个。  

<s:label name="name" value="Username">
<s:label name="address" value="Address">

optiontransferselect标签

用于创建一个选项转移列表组件,由两个<select>标签以及他们之间用于将选项在两个<select>之间相互转移的按钮组成,表单提交时,将提交两个列表框中的选项。

 select标签

 可以创建一个下拉列表框,生成html的<select>标签

 

 optgroup标签

<s:optgroup>标签用于生成一个下拉列表框的选项组,通常该标签放在<s:select>标签中,作为选项,一个下拉列表可以包含多个选项组,所以一个<s:select>标签中可以包含多个<s:optgroup>标签。

 

 password标签

 创建密码输入框,用于输入密码,不显示明文。常用属性有name、size和maxlength,size指定密码输入框的显示宽度以字符数为单位,maxlength限定输入的最大字符个数。

<s:password label="Password" name="pwd" maxlength="15">

radio标签

用于生成多个单选框。

reset标签

创建一个重置按钮,用于重置表单内容。

<s:reset value="重置">

 textarea/textfield标签

两个标签都是创建文本框,区别是<s:textarea>创建的文本框是多行的,而<s:textfield>是单行的。

一般指定其name和value属性即可。

对于<s:textarea>还可以用cols和rows属性分别指定多行文本框的列数和行数。

token标签

<s:token>标签用于防止表单重复提交,实际在转换为html标签时 ,添加了一个隐藏域,存储了当前提交的值,由于每次提交的值都不一样,若拦截器在拦截信息时检测到两次提交表单时该隐藏域值相等,则阻止表单提交。

只需简单添加在表单元素中就行。

<s:form>
    <s:token/>
</s:form>

非表单标签

非表单标签主要用于输出在Action中封装的信息。

actionerror标签

输出错误信息到客户端,将Action中的信息输出到页面中,实际是Action实例中的getActionErrors()方法返回值

<s:actionerror/>

actionmessage标签

输出提示信息到客户端,实际是Action实例中的getActionMessage()方法返回值

<s:actionmessage/>

component标签

用于使用自定义的标签、模板、主题等。

div标签

生成html的<div>标签

fielderror标签

用于输出Action中的fieldErrors属性保存的字段错误,fieldErrors是一个Map类型的属性,在数据校验、类型转换发生错误时,相关的信息会存储在该Map中,通过该标签就可以输出这些信息。

<s:fielderror/>

 可以通过addActionErrors()、addActionMessage()、addFieldErrors()方法来手动添加信息,也可以通过上面的三个标签取对应数据。(这三个方法在Action中可以直接调用,是父类的方法)

原文地址:https://www.cnblogs.com/liuyiyuan/p/12662002.html