`

Struts2的自定义标签

 
阅读更多

       最近闲来无事,就想把以前的毕业设计给重新改造一番,改造前的框架为Struts2+Spring+Hibernate+Sql Server 2005,改造为Struts2+Spring+mybatis+mysql,最近两年mybatis用的比较多,而mysql以前没用涉及过,最终的表结构重新设计了一份,加入了外键,增加了窄表的设计,系统入口增加url过滤,系统异常日志使用拦截器统一处理,其他业务逻辑大致保持原样,为了使呈现层更加多样性,特意增加了Struts2的自定义标签,下面是详细的开发过程。

       先来了解下Struts2的自定义标签,struts的扩展开发都是由struts2-core-xx.jar的具体支持,框架在struts初始化过程中会加载诸多配置文件,我们要做的就是要弄明白,具体的文件放置在何处。

       我们的标签需要在jsp中引用,就像struts的s标签的引用,就像<%@taglib prefix="s" uri="/struts-tags"%>,我们自定义的标签也一样,<%@taglib prefix="f" uri="/feng"%>,那么该标签定义在哪里呢?没错,就是tld文件,feng.tld文件要放置在“项目/WEB-INF/”目录下,内容如下

<?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>2.2.3</tlib-version>
	<jsp-version>1.2</jsp-version>
	<short-name>f</short-name>
	<uri>/feng</uri>
	<display-name>"feng Tags"</display-name>
	<tag>
		<name>date</name>
		<tag-class>com.struts.extend.tag.date.DateTag</tag-class>
		<body-content>empty</body-content>
		<description></description>
		<attribute>
			<name>name</name>
			<required>true</required>
			<rtexprvalue>false</rtexprvalue>
			<description><![CDATA[input日期的名字,该属性必须有,作为传递参数名称使用]]></description>
		</attribute>
		<attribute>
			<name>id</name>
			<required>true</required>
			<rtexprvalue>false</rtexprvalue>
			<description><![CDATA[该属性必须有,作为组件标识使用,如果没有意义,则可是使用name相同的值]]></description>
		</attribute>
		...
	</tag>
</taglib>

        其中<attribute>为标签的传入参数,<tag-class>表示标签动态生成的java类,该类需要继承AbstractUITag或者其父类ComponentTagSupport,实现以下方法:

public Component getBean(ValueStack vs, HttpServletRequest res, HttpServletResponse req)
{
	return new Date(vs, res, req);
}
//实体类设置参数
protected void populateParams()
{
        Date date = (Date) this.component;
	date.setId(this.id);
	date.setName(this.name);
}

       其中Date为具体的实体类,需要继承org.apache.struts2.components.UIBean,实现以下方法:

public Date(ValueStack stack, HttpServletRequest request, HttpServletResponse response)
{
	super(stack, request, response);
}
//模板的名称
protected String getDefaultTemplate()
{
	return "date";
}
//参数初始化
public void evaluateParams()
{
	super.evaluateParams();
	if (this.id != null)
	{
		addParameter("id", findString(this.id));
	}
	addParameter("name", findString(this.name));
}

        最后,就是具体的模板了,模板要放置在“项目/template”文件夹的simple或者xhtml中,LZ使用的ftl作为模板,名称date.ftl,ftl的语法不做赘述,样例如下:

<input<#rt/>
 id="${parameters.id}" name="${parameters.name}"  type="text" <#rt/>
/><#rt/>

         上述模板的类型,文件目录和类型可在strtus.propertis或者strtus.xml中配置:

### Standard UI theme
### Change this to reflect which path should be used for JSP control tag templates by default
struts.ui.theme=xhtml
struts.ui.templateDir=template
#sets the default template type. Either ftl, vm, or jsp
struts.ui.templateSuffix=ftl

       好了,最后看看做好的标签怎么使用呢,就这么简单

<f:date name="test" id="test"/>

       整个struts请求到jsp页面到最终渲染成html静态页面的过程如上述,过程稍显繁杂,但熟悉之后会发现封装性还是很好的,模板中可以和其他js进行关联,待静态页面生成后效果显现。

1
0
分享到:
评论

相关推荐

    struts2 自定义标签

    通过struts2 自定义标签实例,可以用这个对项目中的实现自定义标签。从而减少代码。

    struts2自定义标签

    struts2自定义标签struts2自定义标签struts2自定义标签struts2自定义标签

    Struts2自定义标签

    Struts2自定义标签,附带配置文件及后台代码,从工作当中整理

    struts2自定义标签案例详解

    Struts2中实现自定义标签很简单,主要分为3步: 1.创建taglib文件(.tld),编写标签声明。 2.编写自定义标签类。 3.在页面中使用标签。 下面以一个自定义的分页标签为例,进行说明。 其实,开发自定义标签并不...

    Struts2自定义分页标签

    Struts2自定义分页标签很详细了,新手可以少走弯路,节约时间 资源包括了后台如何操作。

    基于struts2 自定义标签 分页

    基于struts2的自定义分页标签实现的一个demo,连接数据库为Oracle

    Struts2 自定义标签

    附件是一个简单的自定义标签,提供给大家参考,例子很简单,希望对大家有帮助,基于eclipse 开发

    tag struts2的自定义标签实例

    tag struts2 自定义标签 实例 tag struts2的自定义标签实例

    Struts 2 自定义标签分页

    Struts 2 自定义标签分页,有简单上下分页和数字分页

    struts实现自定义标签

    struts实现自定义标签

    STRUTS自定义标签

    STRUTS自定义标签STRUTS自定义标签STRUTS自定义标签STRUTS自定义标签STRUTS自定义标签STRUTS自定义标签STRUTS自定义标签STRUTS自定义标签STRUTS自定义标签STRUTS自定义标签STRUTS自定义标签STRUTS自定义标签STRUTS...

    struts1自定义标签

    自定义标签,直接代码,直接模仿开发即可 public class ButtonTag extends AttributeTag { //tld中定义的属性 public String label; public String url; public String click; public String confirm; public ...

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

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

    struts自定义标签详解

    举例解说Bean Tags,HTML Tags 以及Logic Tags的使用方法。

    struts2的自定义标签

    struts2的自定义标签写法,并且有一个例子代码。

    Struts2_自定义标签的方法

    Struts2_自定义标签的方法

Global site tag (gtag.js) - Google Analytics