为了简单说明,拿系统代码处理为例,根据标识获取名称
定义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}' />
</td>
分享到:
相关推荐
【JSP自定义标签开发使用】知识详解 JSP(JavaServer Pages)是一种动态网页技术,允许开发者在HTML页面中嵌入Java代码。在JSP中,自定义标签的使用可以增强代码的可读性和可维护性,使得复杂的业务逻辑更易于封装...
**JSP自定义标签开发手册** 在JavaServer Pages (JSP) 技术中,自定义标签是扩展JSP功能的重要手段,它允许开发者创建可重用、可封装的组件,提升代码的可读性和可维护性。本手册将深入探讨JSP自定义标签的开发流程...
**JSP自定义标签开发入门** 在Java Web开发中,JSP(JavaServer Pages)是一种动态网页技术,它允许开发者将HTML代码与Java代码混合编写,以实现动态内容的生成。然而,为了提高代码的可读性和可维护性,通常会推荐...
年 MM 月 dd 日");String dateStr = sdf.format(new Date());...总的来说,自定义标签和TLD文件是JSP开发中提高代码复用性和可读性的关键工具。通过正确理解和使用这些元素,开发者可以构建出高效且易于维护的JSP应用。
本实例将深入探讨如何实现一个简单的JSP自定义标签。 首先,自定义标签的实现主要依赖于两个核心概念:Tag接口和TagSupport类。`Tag`接口定义了自定义标签必须实现的方法,如`doStartTag()`和`doEndTag()`,它们...
本篇学习笔记将深入探讨JSP自定义标签的相关概念、创建方法以及实际应用。 一、概述 1.1 使用简单标签机制 JSP自定义标签提供了类似HTML标签的语法结构,通过自定义标签,开发者可以封装复杂的Java代码,使得页面...
本教程将深入探讨JSP自定义标签的使用,同时结合实例介绍分页和下拉框绑定值的封装。 一、JSP自定义标签基础 1. **定义标签库(Tag Library)**:自定义标签首先需要定义一个TLD(Tag Library Descriptor)文件,它...
本篇文章将深入探讨JSP自定义标签的开发与使用,以及如何通过实例`Demo1_JspTag`来理解这一过程。 首先,我们需要了解自定义标签的基本概念。自定义标签是JSP的一种扩展机制,它允许我们封装复杂的Java代码或业务...
在JavaServer Pages (JSP) 开发中,自定义标签库是提高代码可重用性和模块化的重要手段。本文将详细讲解如何利用JSP自定义标签库实现...理解这些文件的作用和相互关系,对于掌握JSP自定义标签库的开发和应用至关重要。
总之,JSP自定义标签是提高JSP开发效率和代码复用性的重要工具,通过创建和使用自定义标签,我们可以构建出更加模块化、易于维护的Web应用程序。结合Tomcat这样的Servlet容器,可以快速地部署和测试这些自定义组件。
在使用JSP自定义标签时,开发者可能会遇到一些报错问题,这通常涉及到项目结构、类路径设置或自定义标签的编译与打包方式。在本文中,我们将深入探讨这些问题,以及如何解决“JspException”这个特定异常。 首先,...
在IT行业中,Java Server ...总的来说,JSP自定义标签为开发人员提供了强大且灵活的方式来扩展JSP的功能。结合前端技术,我们可以构建出交互性极强的动态网页,例如这里的自动完成框,极大地提升了用户的输入体验。
本篇将深入探讨“JSP自定义标签之日期显示”,以及如何通过自定义标签来优雅地处理日期格式化和展示。 首先,我们要理解JSP自定义标签的基本概念。自定义标签是JSP的一种扩展,它不是Java内置的标签,而是由开发者...
使用IDE如Eclipse或IntelliJ IDEA,它们提供了强大的JSP自定义标签开发支持,包括自动完成、错误检查和调试。 总结来说,JSP自定义标签实例涉及创建TLD文件来描述标签,编写处理类实现具体功能,然后在JSP页面中...
总结来说,通过学习和实践JSP自定义标签,我们可以构建高效、灵活的Web应用程序,比如这里的分页系统,它不仅简化了页面的开发,还增强了系统的扩展性和可维护性。在实际项目中,结合良好的设计原则和最佳实践,...
本教程将深入探讨JSP自定义标签的实例与详细讲解。 一、JSP自定义标签概述 JSP自定义标签是类似于HTML标签的自定义组件,但它们提供了更强大的功能,可以封装Java代码,提供复杂的业务逻辑。自定义标签通过TLD(Tag...
1. **自定义标签开发步骤** - **编写JAVA类**:你需要创建一个Java类来实现特定的接口,如`javax.servlet.jsp.tagext.TagSupport`或`javax.servlet.jsp.tagext.SimpleTagSupport`,或者继承已有的类,如`javax....