Struts2 自定义标签

Struts2使用自定义标签

1.      在web.xml中配置struts标签库

 

<!-- 配置struts2的标签库 -->

<jsp-config>

<taglib>

        <taglib-uri>/struts-tags</taglib-uri>        <taglib-location>/WEB_INF/system_tags.tld</taglib-location>

</taglib>

</jsp-config>

 

2.      在指定位置创建一个标签文件(.tld) ,可在struts2的核心包下的/META-INF目录下复制struts-tag.tld文件,然后自己重新定义需要的标签,完整的定义如下,可根据自己需要自行添加,这里以一个<sys:url >为例

 

<?xml version="1.0" encoding="UTF-8"?>

<taglib version="2.0" xmlns="http://java.sun.com/xml/ns/j2ee"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd">

       

<tlib-version>1.0</tlib-version>

<jsp-version>2.0</jsp-version>

<short-name>sys</short-name>

<uri>/system_tags</uri>

 

<tag>

    <name>url</name>

    <tag-class>com.zys.system.support.UrlTag</tag-class>

    <body-content>JSP</body-content>

    <attribute>

            <name>url</name>

            <required>true</required>

            <rtexprvalue>true</rtexprvalue>

   </attribute>

</tag>

</taglib>

标签详解:

a.      <tlib-version>:标签的版本号

b.      <jsp-version>:  jsp的版本号

c.      <short-name>:标签的缩略名,在jsp页面作为”prefix”属性的值

d.      <uri>: 统一资源标识符,在jsp页面作为”uri”属性的值

e.      <name>: 自定义标签名

f.       <tag-class >: 自定义标签的实现类

g.      <body-content>: 值为JSP表示接受所有JSP语法

h.      <attribute>: 对应标签的属性

i.        <name>: attribute下的name标签表示属性名

j.        <rtexprvalue>: 表示是否可以使用JSP表达式,true表示可以使用动态值,false表示只能用指定值

k.      <required>: 为必写的标签,不写属性标签不能被正常使用(有待确定)

3.      新建一个java类,并继承TagSupport类,并重写其中doEndTag和doStartTag方法(这个方法由系统自动调用),由于设置了namespace,所以需要写这个类来实现把项目名添加到URL中

 

publicclass UrlTag extends TagSupport{

   

    private String url;

    public String getUrl() {

        returnurl;

    }

    publicvoid setUrl(String url) {

        this.url = url;

    }

 

    /**

     * 重写doStartTag方法,将项目名加上url输出到客户端(系统自动调用)

     */

    publicint doStartTag(){   

        try {

            url= (url==null)? "" : url;

            pageContext.getOut().print("SSHStudy"+url);

        } catch (IOException e) {

            e.printStackTrace();

        }

        returnSKIP_BODY;

    }

   

    /**

     * 重写doEndTag方法(系统自动调用)

     */

    publicint doEndTag(){

        returnSKIP_BODY;

    }

}

 

 

4.      在JSP页面导入自定义标签库

 

<%@taglib uri="/system_tags" prefix="sys" %>

 

5.      在form表单的action处使用自定义标签

 

<form action="<sys:url url="/system/login!check.do" />" method="post">

  用户名:<input type="text" name="use"/><br>

码:<input type="password" name="pd"/><br>

          <input type="submit" value="提交"/>

</form>

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小胖墩有点瘦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值