`
燮羽天翔
  • 浏览: 110126 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

struts2中编写自定义标签

阅读更多

在WEB-INF下建立tld文件tag.tld:

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">

<taglib>
    <tlib-version>1.0</tlib-version>
    <jsp-version>1.2</jsp-version>
    <short-name>tag</short-name>
    <uri>/tag</uri>
    <display-name>a demo taglib</display-name>
    <description>
        <![CDATA["some description"]]>
    </description>
    <tag>
        <name>head</name>
        <tag-class>com.demo.ui.HeadTag
        </tag-class>
        <body-content>empty</body-content>
        <description>
            <![CDATA[some description]]>
        </description>
    </tag>
</taglib>

 

编写HeadTag.java类:

public class HeadTag extends AbstractUITag {

    @Override
    public Component getBean(ValueStack arg0, HttpServletRequest arg1,
            HttpServletResponse arg2) {
        
        return new Head(arg0,arg1,arg2);
    }

}

 

编写Head.java类:

public class Head extends UIBean {

    public Head(ValueStack stack, HttpServletRequest request,
            HttpServletResponse response) {
        super(stack, request, response);
    }

    @Override
    protected String getDefaultTemplate() {
        return "head";
    }

}

 编写head.ftl模板文件:

<div>head text</div>
<script type="text/javascript" src="<@s.url value='/struts/com/demo/javascript/script.js' />"></script>

 

在web.xml中web-app节点下添加如下内容(我使用的是servlet 2.4):

<jsp-config>
        <taglib>
            <taglib-uri>/WEB-INF/tag.tld</taglib-uri>
            <taglib-location>/tag</taglib-location>
        </taglib>
    </jsp-config>

 

最后就可以在页面中使用这个自定义标签了page.jsp:

<%@ taglib prefix="tag" uri="/tag" %>  

……

<tag:head />

 

转了一大圈,才算转出来,下面我来讲下这个流程:

1.page.jsp里面taglib里面的属性prefix是指下面的标签都是以tag打头,比如:<tag:head/>,属性uri是指web.xml里面映射的路径/WEB-INF/tag.tld,也可以跳过web.xml,直接在page.jsp里面的属性uri使用/WEB-INF/tag.tld

2.像tag:head里面的属性,比如head,都是在tag.tld里面定义的,如果使用head,会找到类com.demo.ui.HeadTag,而类HeadTag又使用到了类com.demo.ui.Head。注意这里一定要这么写,直接在tag.tld里面定位类com.demo.ui.Head是不行的

3.com.demo.ui.Head类里重载了方法getDefaultTemplate,返回head的话,就意味着去找head.ftl模板中,这里我把模板放到template.xhtml包里,struts2会自动找到这个模板

4.如果需要把自定义的标签打成jar包,需要把类com.demo.ui.HeadTag,类com.demo.ui.Head,template.xhtml.head.ftl,/WEB-INF/tag.tld打到jar包即可,需要注意的是tag.tld和其他文件不同,需要放到META-INF文件夹下,跟MANIFEST.MF同级,应用会自动找到这个自定义标签,不需要在web.xml文件里描述了

转载自:http://www.cnblogs.com/modou/articles/1453025.html

分享到:
评论

相关推荐

    struts2自定义标签案例详解

    编写自定义标签类。 3.在页面中使用标签。 下面以一个自定义的分页标签为例,进行说明。 其实,开发自定义标签并不需要Struts2的支持,一般情况下,只需要继承javax.servlet.jsp.tagext.BodyTagSupport类,重写...

    Struts2 自定义下拉框标签Tag(源码)

    自定义标签主要包括三个步骤: 1、编写java类,继承TagSupport类; 2、创建tld文件,影射标签名和标签的java类; 3、jsp页面引入tld。 博文地址:http://blog.csdn.net/itmyhome1990/article/details/50718282

    Struts2 标签库

    Struts2标签库提供了主题、模板支持,极大地简化了视图页面的编写,而且,struts2的主题、模板都提供了很好的扩展性。实现了更好的代码复用。Struts2允许在页面中使用自定义组件,这完全能满足项目中页面显示复杂,...

    Struts2 in action中文版

    6.7.2 Struts 2中常用的表达式语言特性 131 6.7.3 表达式语言的高级特性 135 6.8 小结 137 第7章 UI组件标签 139 7.1 为什么需要UI组件标签 139 7.2 标签、模板和主题 144 7.2.1 标签 146 7.2.2 模板 146 7.2.3 ...

    struts2 学习例子

    Struts2标签库提供了主题、模板支持,极大地简化了视图页面的编写,而且,struts2的主题、模板都提供了很好的扩展性。实现了更好的代码复用。Struts2允许在页面中使用自定义组件,这完全能满足项目中页面显示复杂,...

    深入浅出Struts2(附源码)

    8.4 编写自定义的验证程序 173 8.4.1 注册 176 8.4.2 示例 177 8.5 利用Validateable接口实现编程验证 180 8.6 小结 182 第9章消息处理与国际化 183 9.1 地区和Java资源绑定 183 9.2 Struts中的国际化支持 ...

    深入浅出Struts 2 .pdf(原书扫描版) part 1

    8.4 编写自定义的验证程序 173 8.4.1 注册 176 8.4.2 示例 177 8.5 利用Validateable接口实现编程验证 180 8.6 小结 182 第9章 消息处理与国际化 183 9.1 地区和Java资源绑定 183 9.2 Struts中的国际化支持 185 9.3...

    Java小说系统 V1.0 Beta

    Java小说系统是一个由Java语言编写的系统,系统采用Spring4+Hibernate4+Struts2开源的Mvc框架开发。 Java小说系统特点: 1:采用模板技术,可以自定义模板,采用Java自定义标签调用后台数据简单方便。 2:采用...

    struts_jstl

    * 函数库的使用 * 自定义函数库 * 定义类和方法(必须定义为public static) * 编写tld文件,并且将tld文件放到WEB-INF下 * 在jsp中使用taglib指令引入自定义标签库 * 直接使用即可 &lt;br&gt; ...

    信息管理系统微信小程序.zip

    前端采用的微信小程序的自定义组件标签编写的,服务器是java语言,采用的spring+struts2+mybatis框架编写的,数据库是用的MySql.从前端到后台是比较全面的。项目的都是些增删改查的简易逻辑,如果需要练习一下,可以...

    JAVA SMART系统-系统框架设计与开发程序源代码毕业论文

    本系统的表现层是基于Struts作扩展设计,结合本系统的需求完成了自定义标签的封装,基本action接口的编写。在业务层则是采用单例模式设计与Spring的IoC模式相结合,实现了公共代理类的编写,各业务逻辑接口的封装。...

    Java Web程序设计教程

    第7章 struts2中应用模板语言 145 7.1模板语言简介 145 7.2应用velocity 146 7.2.1velocity基础 146 7.2.2struts2对velocity的支持 153 7.3应用freemarker 155 7.3.1freemarker基础 155 7.3.2struts2整合...

    JAVA SMART系统-系统框架设计与开发(源代码+论文).rar

    本系统的表现层是基于Struts作扩展设计,结合本系统的需求完成了自定义标签的封装,基本action接口的编写。在业务层则是采用单例模式设计与Spring的IoC模式相结合,实现了公共代理类的编写,各业务逻辑接口的封装。...

    SMART系统-系统框架设计与开发(JAVA)

    本系统的表现层是基于Struts作扩展设计,结合本系统的需求完成了自定义标签的封装,基本action接口的编写。在业务层则是采用单例模式设计与Spring的IoC模式相结合,实现了公共代理类的编写,各业务逻辑接口的封装。...

    基于JAVA SMART系统-系统框架设计与开发(毕业设计+lw)

    本系统的表现层是基于Struts作扩展设计,结合本系统的需求完成了自定义标签的封装,基本action接口的编写。在业务层则是采用单例模式设计与Spring的IoC模式相结合,实现了公共代理类的编写,各业务逻辑接口的封装。...

    从J2SE到J2EE知识点介绍

    3. Struts 2 标签库说明及使用 160 4. set 描述 169 5. text 描述 170 6. property 描述 170 7. Struts的异常处理 171 8. Struts的上传与下载 178 五、 Hibernate 192 (一) 前言 192 (二) 持久化层 193 (三) ORM介绍...

    JAVA SMART系统-系统框架设计与开发(源代码+论文)

    本系统的表现层是基于Struts作扩展设计,结合本系统的需求完成了自定义标签的封装,基本action接口的编写。在业务层则是采用单例模式设计与Spring的IoC模式相结合,实现了公共代理类的编写,各业务逻辑接口的封装。...

Global site tag (gtag.js) - Google Analytics