`

JSP 自定义标签 的 开发

阅读更多
为了简单说明,拿系统代码处理为例,根据标识获取名称

定义xxx.tld文件,放在WEB-INF下的tld中
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
<taglib>
	<tlibversion>1.2</tlibversion>
	<jspversion>1.1</jspversion>
	<shortname>cpctld</shortname>
	<uri>/fulg</uri>
	<tag>
		<name>xiTongDaiMaMingCheng</name>
		<tagclass>com.xxx.xxx.tag.XiTongDaiMaNameTag</tagclass>
		<bodycontent>empty</bodycontent>
		<description>
			<![CDATA[根据系统代码的整形代码或字符代码获取名称,标签中可选择任意一种定义并赋值]]>
		</description>
		<attribute>
			<name>biaoshi</name>
			<required>true</required>
			<rtexprvalue>true</rtexprvalue>
			<description>
				<![CDATA[当前系统代码的父节点标识,必定义]]>
			</description>
		</attribute>
		<attribute>
			<name>mingCheng</name>
			<required>false</required>
			<rtexprvalue>true</rtexprvalue>
			<description>
				<![CDATA[当前系统代码的父节点名称,仅作显示指导使用,非必定义]]>
			</description>
		</attribute>
		<attribute>
			<name>zhengXingDaiMa</name>
			<required>false</required>
			<rtexprvalue>true</rtexprvalue>
			<description>
				<![CDATA[整形代码,非必定义,但与字符代码至少定义一个]]>
			</description>
		</attribute>
		<attribute>
			<name>ziFuDaiMa</name>
			<required>false</required>
			<rtexprvalue>true</rtexprvalue>
			<description>
				<![CDATA[整形代码,非必定义,但与字符代码至少定义一个]]>
			</description>
		</attribute>
		
	</tag>
</taglib>



web.xml中配置所写的xxx.tld

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




写标签类

package xxx.xxx.tag;

import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.WeakHashMap;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;



/**
 * @ClassName: XiTongDaiMaNameTag
 * @Description: TODO(系统代码标签,根据zhengXingDaiMa或ziFuDaiMa获取整形代码名称,两种情况标签中至少写一个,都写按ziFuDaiMa查询)
 * @Company neusoft
 * @author fulg
 * @date 2013-10-30
 */
public class XiTongDaiMaNameTag extends TagSupport{
	
	//父节点标识
	private int biaoshi;

	//父节点名称,非必填项,仅作显示说明使用,代码里显示当前系统代码的名称
	private String mingCheng;
	

	//整形代码
    private int zhengXingDaiMa;
	
    //字符代码
	private String ziFuDaiMa;
	
	//名称缓存
	//private WeakHashMap nameMap;//使用map缓存后,系统代码树的修改无法实时反映到map中
	

	
	@Override	
	public int doStartTag() throws JspException {
		
		String xiTongDaiMaMingCheng = "";
		
		//if(nameMap==null||nameMap.isEmpty()){
			
				
				ContextHolder.setCustomerType(SysConstants.CURRENT_SERVER);
		        
				//系统代码实例对象
			    IXiTongDaiMaService xiTongDaiMaService = (IXiTongDaiMaService)AppContextUtils.getBean("xiTongDaiMaService");
				
					
				//根据父类查询系统代码列表	
				List<XiTongDaiMa>   list = null;
				
				
				//if(mingCheng!=null){//不以名称查询,因为名称可以改变
								
				//	list = xiTongDaiMaService.getXiTongDaiMaByFenLeiMingCheng(mingCheng);
								
				//}else{
				
					list = xiTongDaiMaService.getXiTongDaiMaByFuJieDianBiaoShi(biaoshi);
					
				//}//else end
				
			
				//nameMap = new WeakHashMap();
					
				for (XiTongDaiMa vo:list) {
					
						if(ziFuDaiMa!=null){
							
							//nameMap.put(vo.getZiFuDaiMa(), vo.getMingCheng());
							
							if(ziFuDaiMa.equals(vo.getZiFuDaiMa())){
								xiTongDaiMaMingCheng = vo.getMingCheng();
								break;
							}
							
						}else{
							
							//nameMap.put(vo.getZhengXingDaiMa(), vo.getMingCheng());
							
							if(zhengXingDaiMa==vo.getZhengXingDaiMa()){
								xiTongDaiMaMingCheng = vo.getMingCheng();
								break;
							}
							
						}
		
					}
			
		//}//if nameMap==null
		
		/*if(ziFuDaiMa!=null&&!ziFuDaiMa.equals("")){
			xiTongDaiMaMingCheng = (String)nameMap.get(ziFuDaiMa);
			
		}else{
			xiTongDaiMaMingCheng = (String)nameMap.get(zhengXingDaiMa);
			
		}*/
			
		
                //此方法里也可以封装jsp页面元素等操作
                //例如String str = "<select id='xxx' name='xxx'><option value="+vo.getZhengXingDaiMa()+">"+vo.getMingCheng()+"</option></select>"
                //注:option需要for循环等操作
                //然后把会写到页面就可以了out.write(str);

		try {
			JspWriter out = pageContext.getOut();
			out.write(xiTongDaiMaMingCheng);
		} catch (IOException e) {
			e.printStackTrace();
			System.out.println(e.getMessage());
		}
		return SKIP_BODY;
	}
	
	
	
	@Override
	public int doEndTag() throws JspException {
		return EVAL_PAGE;
	}
	
	
	
	
	public int getBiaoshi() {
		return biaoshi;
	}

	public void setBiaoshi(int biaoshi) {
		this.biaoshi = biaoshi;
	}

	public String getMingCheng() {
		return mingCheng;
	}

	public void setMingCheng(String mingCheng) {
		this.mingCheng = mingCheng;
	}

	public int getZhengXingDaiMa() {
		return zhengXingDaiMa;
	}

	public void setZhengXingDaiMa(int zhengXingDaiMa) {
		this.zhengXingDaiMa = zhengXingDaiMa;
	}

	public String getZiFuDaiMa() {
		return ziFuDaiMa;
	}

	public void setZiFuDaiMa(String ziFuDaiMa) {
		this.ziFuDaiMa = ziFuDaiMa;
	}

	/*public WeakHashMap getNameMap() {
		return nameMap;
	}

	public void setNameMap(WeakHashMap nameMap) {
		this.nameMap = nameMap;
	}*/
	
}




最后页面使用
<td nowrap="nowrap">
    <fulg:xiTongDaiMaMingCheng  biaoshi="100" mingCheng="审核状态"  zhengXingDaiMa='${shenHeZhuangTai}' />&nbsp;
</td>
0
0
分享到:
评论

相关推荐

    JSP自定义标签开发使用

    【JSP自定义标签开发使用】知识详解 JSP(JavaServer Pages)是一种动态网页技术,允许开发者在HTML页面中嵌入Java代码。在JSP中,自定义标签的使用可以增强代码的可读性和可维护性,使得复杂的业务逻辑更易于封装...

    jsp自定义标签开发手册

    **JSP自定义标签开发手册** 在JavaServer Pages (JSP) 技术中,自定义标签是扩展JSP功能的重要手段,它允许开发者创建可重用、可封装的组件,提升代码的可读性和可维护性。本手册将深入探讨JSP自定义标签的开发流程...

    JSP自定义标签开发入门

    **JSP自定义标签开发入门** 在Java Web开发中,JSP(JavaServer Pages)是一种动态网页技术,它允许开发者将HTML代码与Java代码混合编写,以实现动态内容的生成。然而,为了提高代码的可读性和可维护性,通常会推荐...

    jsp自定义标签开发+TLD文件元素详解+实例

    年 MM 月 dd 日");String dateStr = sdf.format(new Date());...总的来说,自定义标签和TLD文件是JSP开发中提高代码复用性和可读性的关键工具。通过正确理解和使用这些元素,开发者可以构建出高效且易于维护的JSP应用。

    jsp 自定义标签实例

    本实例将深入探讨如何实现一个简单的JSP自定义标签。 首先,自定义标签的实现主要依赖于两个核心概念:Tag接口和TagSupport类。`Tag`接口定义了自定义标签必须实现的方法,如`doStartTag()`和`doEndTag()`,它们...

    JSP自定义标签学习笔记

    本篇学习笔记将深入探讨JSP自定义标签的相关概念、创建方法以及实际应用。 一、概述 1.1 使用简单标签机制 JSP自定义标签提供了类似HTML标签的语法结构,通过自定义标签,开发者可以封装复杂的Java代码,使得页面...

    jsp 自定义标签的使用

    本教程将深入探讨JSP自定义标签的使用,同时结合实例介绍分页和下拉框绑定值的封装。 一、JSP自定义标签基础 1. **定义标签库(Tag Library)**:自定义标签首先需要定义一个TLD(Tag Library Descriptor)文件,它...

    JSP自定义标签的开发及使用

    本篇文章将深入探讨JSP自定义标签的开发与使用,以及如何通过实例`Demo1_JspTag`来理解这一过程。 首先,我们需要了解自定义标签的基本概念。自定义标签是JSP的一种扩展机制,它允许我们封装复杂的Java代码或业务...

    jsp自定义标签库实现数据列表显示

    在JavaServer Pages (JSP) 开发中,自定义标签库是提高代码可重用性和模块化的重要手段。本文将详细讲解如何利用JSP自定义标签库实现...理解这些文件的作用和相互关系,对于掌握JSP自定义标签库的开发和应用至关重要。

    jsp自定义标签例子,能在Tomcat下直接运行

    总之,JSP自定义标签是提高JSP开发效率和代码复用性的重要工具,通过创建和使用自定义标签,我们可以构建出更加模块化、易于维护的Web应用程序。结合Tomcat这样的Servlet容器,可以快速地部署和测试这些自定义组件。

    jsp自定义标签报错的问题

    在使用JSP自定义标签时,开发者可能会遇到一些报错问题,这通常涉及到项目结构、类路径设置或自定义标签的编译与打包方式。在本文中,我们将深入探讨这些问题,以及如何解决“JspException”这个特定异常。 首先,...

    JSP自定义标签之自动完成框

    在IT行业中,Java Server ...总的来说,JSP自定义标签为开发人员提供了强大且灵活的方式来扩展JSP的功能。结合前端技术,我们可以构建出交互性极强的动态网页,例如这里的自动完成框,极大地提升了用户的输入体验。

    JSP自定义标签之日期显示

    本篇将深入探讨“JSP自定义标签之日期显示”,以及如何通过自定义标签来优雅地处理日期格式化和展示。 首先,我们要理解JSP自定义标签的基本概念。自定义标签是JSP的一种扩展,它不是Java内置的标签,而是由开发者...

    jsp自定义标签实例

    使用IDE如Eclipse或IntelliJ IDEA,它们提供了强大的JSP自定义标签开发支持,包括自动完成、错误检查和调试。 总结来说,JSP自定义标签实例涉及创建TLD文件来描述标签,编写处理类实现具体功能,然后在JSP页面中...

    jsp自定义标签编写的分页

    总结来说,通过学习和实践JSP自定义标签,我们可以构建高效、灵活的Web应用程序,比如这里的分页系统,它不仅简化了页面的开发,还增强了系统的扩展性和可维护性。在实际项目中,结合良好的设计原则和最佳实践,...

    JSP自定义标签实例与详细讲解

    本教程将深入探讨JSP自定义标签的实例与详细讲解。 一、JSP自定义标签概述 JSP自定义标签是类似于HTML标签的自定义组件,但它们提供了更强大的功能,可以封装Java代码,提供复杂的业务逻辑。自定义标签通过TLD(Tag...

    jsp自定义标签库注意事项

    1. **自定义标签开发步骤** - **编写JAVA类**:你需要创建一个Java类来实现特定的接口,如`javax.servlet.jsp.tagext.TagSupport`或`javax.servlet.jsp.tagext.SimpleTagSupport`,或者继承已有的类,如`javax....

Global site tag (gtag.js) - Google Analytics