Struts2标签

Struts2标签
Struts2标签的tld文件放在struts2-core-xxxx.jar的META-INF文件夹中--------struts-tags.tld


在使用时,需要在Jsp页面开头加上:
<%@ taglib uri="/struts-tags" prefix="s"%>

其中uri填写的是tld文件中定义的uri
prefix填写的是tld文件中定义的short-name

Struts2中标签分类

Struts 2标签分类如下:
1、通用标签;
2、UI标签;


通用标签(generic tags)分为:数据标签(Data tags)和控制标签(Control tags)


UI标签分为:表单标签(Form tags)、非表单标签(Non-Form UI tags)和 Ajax标签(Ajax tags)

数据标签--- Data tags

数据标签--- Data tags---property

property标签
用途:获取value属性的值


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

property取值为字符串:
    <s:property value="'username'"/>

property设定默认值:
    <s:property value="admin" default="管理员"/>

property设定HTML:
    <s:property value="'<hr/>'" escapeHtml="false"/>

数据标签---Data tags---set

set标签
用途:定义一个变量,赋值并放入指定的作用域中

set 定义adminName变量(默认request)
    <s:set var="adminName" value="username"/>

set 定义session范围adminPwd变量
    <s:set var="adminPwd" value="password” scope="session"/>

set 设定集合变量
<s:set name="list" value="{'zhang3',‘li4',‘wang5'}" />
<s:set name="foMap" value="#{'f1':'bar1', 'f2':'bar2'}" />


数据标签---Data tags---bean

bean标签
用途:可以使用该标签创建简单的JavaBean


<s:bean var="tmp" name="com.lovo.bean.UserBean">
    <s:param name="name" value=“'hu'"></s:param>
</s:bean>

默认放入到stack Context中,所以访问时

<s:property value="#tmp"/>


指定var属性
<s:bean var="myDog" name="com.lovo.bean.Dog">
    <s:param name="name"value="'oudy'"></s:param>
</s:bean>
<s:property value="myDog.name"/>

不指定var属性的区别
<s:bean name="com.lovo.bean.Dog">
    <s:param name="name" value="'oudy'"></s:param>
    <s:property name="name"/>    
</s:bean>

数据标签---Data tags---include

include标签
用途:包含一个servlet输出(jsp页面)

<s:include value="'/includePage.html'"/>
    
注意
    该标签value属性不是OGNL表达式,是一个字符串
例如:
    <s:set var="incPage" value="'/includePage.html'"/>
    
    <s:include value=“#incPage”/>---错误
    <s:include value=“%{#incPage}”/>---正确

数据标签---Data tags---date

date标签
用途:用于格式化日期,最后输出到页面中。


<s:bean var="now" name="java.util.Date">
</s:bean>

<s:date name="#now" format="yyyy-MM-dd HH:mm:ss"/>

数据标签---Data tags---text

text标签
用途:支持国际化信息的标签。首先在本类对应的国际化文件和全局国际化文件中寻找有没有该消息,如果没有找到就用标签中的文本替代,如果文本也没有定义,就用标签的name属性替代。

国际化文件:school=成都朗沃
<s:text name=“school”>
    Lovo 教育
</s:text>

数据标签---Data tags---i18n

i18n标签
用途:加载资源包到值堆栈。它可以允许text标志访问任何资源包的信息。而不只当前的action相关联的资源包。

<s:i18n name="com/lovo/action/RegisterAction1">
    <s:text name="girl">
        <s:param>周周</s:param>
    </s:text>
</s:i18n>

控制标签---Control tags

控制标签---Control tags---判断

if标签---elseif标签---else标签

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

<s:if test="#age > 21">
    大于
</s:if>
<s:elseif test="#age==21">
    等于
</s:elseif>
<s:else>
    小于
</s:else>

控制标签---Control tags---iterator

iterator标签
用途:对集合进行迭代

迭代List集合
<s:set var="lst" value="{'zhang3','li4','wang5','zhao6','chen7'}">
</s:set>

<s:iterator var="ele" value="#lst" begin="0" end="4" step="1" status="sta">
    <s:property value="#ele"/> <br>
</s:iterator>



控制标签---Control tags---iterator

iterator标签
用途:对集合进行迭代

迭代Map集合
<s:set var=“map" value=“#{‘f1’:’bar1’,’f2’:’bar2’,’f3’:’bar3’}">
</s:set>

<s:iterator var="ele" value="#lst" begin="0" end="4" step="1" status="sta">
    <s:property value="#ele"/><br>
     <s:property value="#ele.key"/><br>
    <s:property value="#ele.value"/><br>
</s:iterator>

status属性:可选属性,该属性在迭代时会产生一个IteratorStatus对象,该对象可以判断当前元素的位置,包含了以下属性:
count; 迭代元素个数
index; 迭代元素当前索引
first; 是否为第一个
even; 是否为偶数行
last; 是否最后一个
odd;   是否为奇数行

<s:iterator var="ele" value="#lst" status="sta">
    <s:if test="#sta.odd">
        <s:property value="#ele"/><br>
    </s:if>
</s:iterator>

控制标签---Control tags---sort

sort标签:
用途:用来对指定的集合进行排序,但是排序规则要有开发者提供,即实现自己的Compatator实例,Comparrator是通过实现java.util.comparator接口(外部比较器)来实现。

控制标签---Control tags---generator

generator标签
用途:用于将指定的字符串解析成一个集合,解析时需要指定分隔符。


<s:generator val="'姓名=zhang3;年龄=17;生日=1990-1-1;爱好=没有' " separator=";" var="pd" count="2">
    <s:iterator var="ele" value="#pd">
        <s:property value="#ele"/><br>
    </s:iterator>
</s:generator>

控制标签---Control tags---append

append标签
用途:将多个集合融合到一个新集合中。
<s:set var="list1" value="{'list1element1','list1element2','list1element3'}">
</s:set>
 <s:set var="list2" value="{'list2element1','list2element2','list2element3'}">
 </s:set>
<s:append var="new_append_list">
    <s:param value="#list1"></s:param>
    <s:param value="#list2"></s:param>
</s:append>
<s:iterator var="ele" value="#new_append_list">
    <s:property value="#ele"/><br>
</s:iterator>

控制标签---Control tags---merge

merge标签
用途:将多个集合融合到一个新集合中。
<s:set var="list1" value="{'list1element1','list1element2','list1element3'}">
</s:set>
 <s:set var="list2" value="{'list2element1','list2element2','list2element3'}">
 </s:set>
<s:merge var="new_merge_list">
    <s:param value="#list1"></s:param>
    <s:param value="#list2"></s:param>
</s:merge>
<s:iterator var="ele" value="#new_merge_list">
    <s:property value="#ele"/><br>
</s:iterator>

控制标签---Control tags---subset

subset标签
用途:从一个集合中拆分出一个子集合。

<s:set var="oldLst" value="{'element1','element2','element3'
,'element4','element5','element6','element7','element8'}">
</s:set>    

<s:subset source="#oldLst" start="0" count="5">
    <s:iterator var="ele" >
        <s:property value="#ele"/><br>
    </s:iterator>
</s:subset>

    Struts2还允许开发者决定截取标准,开发者只需要实现一个Decider类,实现SubsetIteratorFilter.Decider接口中的boolean decide(Object element)方法,如果该方法返回真,则表明该元素将被选入子集中。例如:
Java代码:
package com.lovo.decider;
import org.apache.struts2.util.SubsetIteratorFilter.Decider;
public class MyDecider implements Decider {
    public boolean decide(Object arg0) throws Exception {
        String str = (String)arg0;
        if(str.startsWith("b")){
            return true;
        }
        return false;
    }
}

JSP页面代码:
<s:set var="oldLst" value="{'red','blue','green','buffer'}">
</s:set>

<s:bean var="myDecider" name="com.lovo.decider.MyDecider">
</s:bean>
    
<s:subset source="#oldLst" decider="myDecider">
    <s:iterator var="ele" >
        <s:property value="#ele"/><br>
    </s:iterator>
</s:subset>

UI标签

不要求同学使用,只要知道概念和特殊效果就行。

<s:form name="uiTagForm" action="uiTagAction.action" method="Post">
    <s:textfield name=“username” label=“用户名”>
    </s:textfield>
    <s:password name=“password“ label=“密码”>
    </s:password>
    <s:submit name="subBtn" value="提交"></s:submit>
    </s:form>

Struts2的UI标签拥有theme(主题)
一共有四种主题:simple、xhtml、css-xhtml、ajax
默认使用:xhtml

修改主题为simple的方式:
1、控件添加属性theme=“simple”
2、控件所属表单添加属性theme=“simple”
3、在struts.xml中添加常量<constant name="struts.ui.theme" value="simple"></constant>

UI标签中的fielderror

如果使用的是UI标签中的表单标签,无需使用<s:fielderror>,表单标签自带输出错误信息效果;

如果使用普通的html标签,需要使用<s:fielderror>标签显示验证错误信息。但其自带样式效果。把theme设置成simple对它无效果。


推荐使用el表达式:${fieldErrors.username[0]}或${fieldErrors[“password”][0]}







 










  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值