1、前段时间由于系统需要使用到数据字典,简而言之就是用下拉将字典的内容显示出来。我也是参考了一下别人的实例结合自己的业务需求,才将此功能实现。在此将大楷实现步奏记录下来,以方便以后翻阅。
2、在我们项目中使用了2张表来实现此功能。
a、CSMS_T_baseInfo(字典名称)
b、CSMS_T_baseItem(主要用户维护字典的键值)
3、创建一个自定义标签实现类
package com.xgd.web.taglib;
import java.io.IOException;
import java.util.List;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.BodyTagSupport;
import javax.servlet.jsp.tagext.TagSupport;
import com.xgd.CSMS.model.CsmsTBaseitem;
import com.xgd.CSMS.service.ICsmsTBaseitemService;
import com.xgd.utils.SpringBeanUtil;
import com.xgd.utils.StringUtil;
/**
* TagSupport与BodyTagSupport的区别:
* 主要看标签处理类是否要读取标签体的内容和改变标签体返回的内容,如果不需要就用TagSupport,否则就用BodyTagSupport
* 用TagSupport实现的标签,都可以用BodyTagSupport来实现,因为BodyTagSupport继承了TagSupport
*/
@SuppressWarnings("serial")
public class SelectTag extends BodyTagSupport {
private String keyword = "";
private String baseinfosqeid = "";
private boolean defaultValue;
private String value;
private String name;
private String id;
private String cssClass;
private String disabled;
private String readonly;
private String styleClass;
private String multiple;
private String onChange;
private String dataType;
@Override
public int doEndTag() throws JspException{
@SuppressWarnings("unused")
CsmsTBaseitem csmsTBaseitem = new CsmsTBaseitem();
ICsmsTBaseitemService csmsTBaseitemService = (ICsmsTBaseitemService) SpringBeanUtil.getBean("csmsTBaseitemService");
List<CsmsTBaseitem> baseitemList = csmsTBaseitemService.findByProperty(CsmsTBaseitem.class,"baseinfosqeid",baseinfosqeid);
JspWriter out = pageContext.getOut();
StringBuffer sb = new StringBuffer();
sb.append("<select name='"+this.getName()+"' id='"+this.getId()+"'");
if(StringUtil.isNotNull(this.getCssClass())){
sb.append("class=\"" + this.getCssClass() + "\" ");
}
if(StringUtil.isNotNull(this.getStyleClass())){
sb.append("style=\"" + this.getStyleClass() + "\" ");
}
if(StringUtil.isNotNull(this.getMultiple())){
sb.append("multiple=\"" + this.getMultiple() + "\" ");
}
if(StringUtil.isNotNull(this.getOnChange())){
sb.append("onchange=\"" + this.getOnChange() + "\" ");
}
if(StringUtil.isNotNull(this.getDisabled())){
sb.append("disabled=\"" + this.getDisabled() + "\" ");
}
if(StringUtil.isNotNull(this.getReadonly())){
sb.append("readonly=\"" + this.getReadonly() + "\" ");
}
sb.append(">");
if(this.isDefaultValue()){
sb.append("<option value=''>--请选择--</option>");
}
for(CsmsTBaseitem ctb:baseitemList){
if(ctb.getBaseitemvalue().equals(this.getValue())){
sb.append("<option value='"+ctb.getBaseitemvalue()+"' selected='selected'>");
}else{
sb.append("<option value='"+ctb.getBaseitemvalue()+"'>");
}
sb.append(ctb.getBaseitemname()+"</option>");
}
sb.append("</select>");
try {
out.write(sb.toString());
} catch (IOException e) {
throw new JspException(e);
}
return TagSupport.EVAL_PAGE;
}
public String getDataType() {
return dataType;
}
public void setDataType(String dataType) {
this.dataType = dataType;
}
public String getCssClass() {
return cssClass;
}
public void setCssClass(String cssClass) {
this.cssClass = cssClass;
}
public String getStyleClass() {
return styleClass;
}
public void setStyleClass(String styleClass) {
this.styleClass = styleClass;
}
public String getMultiple() {
return multiple;
}
public void setMultiple(String multiple) {
this.multiple = multiple;
}
public String getOnChange() {
return onChange;
}
public void setOnChange(String onChange) {
this.onChange = onChange;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public String getKeyword() {
return keyword;
}
public void setKeyword(String keyword) {
this.keyword = keyword;
}
public boolean isDefaultValue() {
return defaultValue;
}
public void setDefaultValue(boolean defaultValue) {
this.defaultValue = defaultValue;
}
public String getBaseinfosqeid() {
return baseinfosqeid;
}
public void setBaseinfosqeid(String baseinfosqeid) {
this.baseinfosqeid = baseinfosqeid;
}
public String getDisabled() {
return disabled;
}
public void setDisabled(String disabled) {
this.disabled = disabled;
}
public String getReadonly() {
return readonly;
}
public void setReadonly(String readonly) {
this.readonly = readonly;
}
}
4、在web-html.tld中定义自己的标签(此处我定义了一个name为select 的标签,以及此标签的id、css、事件等属性)
<?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> <!-- 标签库要求的JSP规范版本 -->
<short-name>xgd</short-name> <!-- JSP页面编写工具可以用来创建助记名的可选名字 -->
<tag>
<description>Renders an xgd 'select' element. Supports databinding to the selected option.</description>
<name>select</name>
<tag-class>com.xgd.web.taglib.SelectTag</tag-class>
<body-content>JSP</body-content>
<attribute>
<name>defaultValue</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>value</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>baseinfosqeid</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>name</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>id</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>cssClass</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>styleClass</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>multiple</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>onChange</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>disabled</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>readonly</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
5、在web.xml中加载自定义标签
<!-- 加载自定义标签 -->
<jsp-config>
<taglib>
<taglib-uri>/WEB-INF/xgdSelectTag.tld</taglib-uri>
<taglib-location>/WEB-INF/xgdSelectTag.tld</taglib-location>
</taglib>
</jsp-config>
6、JSP中的使用(baseinfosqeid="SQ0004" 数据库中需要有此数据)
<xgd:select defaultValue="true" name="csmsTSecretkey.skAlgorithm" id="skAm" baseinfosqeid="SQ0004" cssClass="combox"></xgd:select>
相关推荐
在实际开发中,有时我们需要根据项目需求实现特定的功能,比如动态生成SQL或者进行复杂的业务逻辑处理,这时MyBatis的自定义标签功能就显得尤为重要。 自定义标签是MyBatis框架的一大特色,它允许我们扩展XML映射...
在Struts2中,自定义标签是提高代码可读性和可维护性的重要工具。本文将深入探讨Struts2自定义标签的实现机制、优点以及如何在实际项目中进行应用。 一、Struts2自定义标签的概念 自定义标签是JSP的一种扩展,允许...
在JavaServer Pages (JSP) 技术中,自定义标签是扩展JSP功能的关键手段,它允许开发者创建可重用的组件,提高代码的可维护性和可读性。本实例将深入探讨如何实现一个简单的JSP自定义标签。 首先,自定义标签的实现...
在ThinkPHP中,自定义标签(Tag Lib)是一种强大的特性,允许开发者扩展模板引擎的功能,使其更符合项目需求。下面将详细解释如何在ThinkPHP 3.0版本中实现自定义标签及其使用方法。 1. **自定义标签的作用** ...
一个“自定义标签”是开发者为了扩展JSP(JavaServer Pages)功能而创建的,它允许我们封装复杂逻辑并将其作为可重用的组件。本项目提供了一个用于分页的自定义标签,适用于那些需要在网页上进行数据分页展示的应用...
本篇文章将详细阐述如何在CKEditor 4.0中进行自定义标签操作,并提供经过修改的编辑器JAR包供下载。 CKEditor 4.0是一款开源的JavaScript富文本编辑器,它支持多种浏览器环境,提供丰富的功能和高度可定制性。...
在Java Server Pages (JSP) 2.0版本中,自定义标签和自定义标签函数极大地扩展了JSP开发的灵活性和可重用性。这些特性允许开发者创建可复用的组件,使代码更加清晰,易于维护。本文将深入探讨JSP 2.0中的自定义标签...
在Spring框架中,自定义标签是一项非常实用的功能,它允许我们创建符合XML语法的自定义元素,以便在配置文件中更方便地表达业务逻辑。在"spring自定义标签例子"这个项目中,我们可以深入理解这一特性,特别是通过...
本案例通过JavaScript来实现自定义标签的功能。具体而言,它通过遍历文档中的内容,将自定义的标签转换为标准的HTML标签,并应用相应的样式。下面我们将详细介绍其实现细节。 #### 自定义标签代码解析 ```...
在JavaServer Pages (JSP) 技术中,自定义标签是提高代码可重用性和模块化的重要手段。自定义标签允许开发者创建自己的组件,这些组件可以像HTML标签一样在页面上使用,使得代码更加清晰易读。本教程将深入探讨JSP...
在 Struts 中,自定义标签是提供一种灵活的方式,使得视图层(通常为 JSP 页面)能够更好地与业务逻辑交互,从而提高代码的可读性和可维护性。本文将深入探讨如何在 Struts 中实现自定义标签。 一、自定义标签概述 ...
在JSP(JavaServer Pages)开发中,自定义标签是一种扩展JSP功能的强大工具,它允许开发者创建可重用的代码组件,以提高代码的可读性和可维护性。本篇学习笔记将深入探讨JSP自定义标签的相关概念、创建方法以及实际...
首先,创建自定义标签的目的是为了增加语义化,使网页内容更易于机器理解,同时提高人类阅读的清晰度。例如,可以定义`<article>`、`<sidebar>`等标签来明确内容区块的类型。自定义标签遵循驼峰式命名规则,如`...
在Java Web开发中,自定义标签(Custom Tags)是一个强大的工具,它允许开发者创建可重用的组件,提高代码的可读性和维护性。自定义标签是JSP标准标签库(JSTL)的一种扩展,它能将复杂的业务逻辑封装起来,使JSP...
Java自定义标签是JavaServer Pages (JSP)技术的一个强大特性,它允许开发者扩展JSP的标准标签库,创建自己的定制化标签,以提高代码的可读性和可维护性。自定义标签可以封装复杂的业务逻辑或者视图呈现,使得页面...
JSP(JavaServer Pages)自定义标签是JSP技术中一个重要的特性,允许开发者创建可重用的、自定义的组件,从而提高代码的可读性和可维护性。本文将深入讲解JSP自定义标签的相关概念、格式、处理过程以及创建和使用...
使用jsp自定义标签的功能实现权限的控制。(如果用户没有某个模块的删除权限,就不现实这个删除按钮) 在整个项目中所有的页面都可以引入自定义的标签去做到权限的控制。 自定义标签文件 删除 可以控制页面中的每...
在这个"Freemarker自定义标签简单案例"中,我们将深入探讨如何利用Freemarker进行模板设计,并结合自定义标签来增强模板的功能。 首先,让我们理解Freemarker的基础知识。Freemarker是一个与语言无关的模板引擎,它...
JSP自定义标签是用户定义的JSP语言元素,可以看成是一种通过标签处理器生成基于XML脚本的方法。自定义标签在功能上和逻辑上都与JavaBean类似,都是一组可重用的组件代码。相较于JavaBean,自定义标签可以使Web开发者...