`

关于java自定义标签的写法(下拉列表两级联动)

    博客分类:
  • java
 
阅读更多

java代码:

package com.newsicom.common.web.tag;

import java.util.Map;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;
import com.newsicom.common.constants.Constants;
import com.newsicom.common.domain.PdEmployeeInfoV;
import com.newsicom.common.domain.PdRegionMaster;
import com.newsicom.common.util.Util;
import com.newsicom.common.web.global.model.impl.RegionMasterMapImpl;

public class CompanySelectTag extends TagSupport {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private String cssClass;

	private String style;

	private String id;

	private boolean hasSaleFlg;

	/**
	 * 获取 hasSaleFlg
	 * 
	 * @return hasSaleFlg
	 */
	public boolean isHasSaleFlg() {
		return hasSaleFlg;
	}

	/**
	 * 设置 hasSaleFlg
	 * 
	 * @param hasSaleFlg
	 *            : hasSaleFlg
	 */
	public void setHasSaleFlg(boolean hasSaleFlg) {
		this.hasSaleFlg = hasSaleFlg;
	}

	public String getCssClass() {
		return cssClass;
	}

	public void setCssClass(String cssClass) {
		this.cssClass = cssClass;
	}

	public String getStyle() {
		return style;
	}

	public void setStyle(String style) {
		this.style = style;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	private String name;

	/**
	 * @return the name
	 */
	public String getName() {
		return name;
	}

	/**
	 * @param name
	 *            the name to set
	 */
	public void setName(String name) {
		this.name = name;
	}

	@Override
	public int doStartTag() throws JspException {

		try {
			PdEmployeeInfoV employeeInfoV = (PdEmployeeInfoV) pageContext
					.getSession()
					.getAttribute(Constants.USER_INFO_HTTP_SESSION);
			StringBuilder sb = new StringBuilder("");
			String orgFlg = employeeInfoV.getOrganizationClassify();
			boolean disabled = false;
			if (orgFlg.equals("02")) {
				// 只锁销售
				if (hasSaleFlg
						&& (employeeInfoV.getFuncIds().indexOf("1") >= 0 || employeeInfoV
								.getFuncIds().indexOf("3") >= 0)) {
					disabled = true;
				} else if (!hasSaleFlg
						&& (employeeInfoV.getFuncIds().indexOf("2") >= 0 || employeeInfoV
								.getFuncIds().indexOf("4") >= 0)) {
					disabled = true;
				}
			}
			sb.append("<select ");
			// 设置ID
			sb.append(id != null ? "id=\"" + id + "\" "
					: Constants.EMPTY_STRING);
			// 设置css
			sb.append(cssClass != null ? "class=\"" + cssClass + "\" "
					: Constants.EMPTY_STRING);
			// 设置名字
			sb.append(name != null ? "name=\"" + name + "\" "
					: Constants.EMPTY_STRING);
			// 设置style
			sb.append(style != null ? "style=\"" + style + "\" "
					: Constants.EMPTY_STRING);
			// 设置是否锁死
			sb.append(disabled ? " disabled " : Constants.EMPTY_STRING);

			sb.append(">\n");
			if (orgFlg.equals("03")) {
				if ((hasSaleFlg && (employeeInfoV.getFuncIds().indexOf("1") >= 0 || employeeInfoV
						.getFuncIds().indexOf("3") >= 0))
						|| (!hasSaleFlg && (employeeInfoV.getFuncIds().indexOf(
								"2") >= 0 || employeeInfoV.getFuncIds()
								.indexOf("4") >= 0))) {
					Map<Integer, PdRegionMaster> map = RegionMasterMapImpl
							.getInstance().getCompanyMap(
									employeeInfoV.getOrganizationId());
					sb.append("<option value=\"\" ></option>\n");
					for (Map.Entry<Integer, PdRegionMaster> entry : map
							.entrySet()) {
						sb.append("<option value=\""
								+ entry.getValue().getSubCompanyId() + "\" >"
								+ entry.getValue().getSubCompanyName()
								+ "</option>\n");
					}
				}
			} else if (orgFlg.equals("02")) {
				if (disabled) {
					sb.append("<option value=\""
							+ employeeInfoV.getOrganizationId()
							+ "\" >"
							+ RegionMasterMapImpl
									.getInstance()
									.getCompany(
											employeeInfoV
													.getUpperOrganizationId(),
											employeeInfoV.getOrganizationId())
									.getSubCompanyName() + "</option>\n");
				}
			}

			sb.append("</select>");

			this.pageContext.getOut().write(sb.toString());
		} catch (Exception e) {
			e.printStackTrace();
		}
		return TagSupport.EVAL_PAGE;
	}
}

 tld代码:

<?xml version="1.0" encoding="UTF-8" ?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
	version="2.0">

	<description>大区选择列表框</description>
	<tlib-version>1.0</tlib-version>
	<short-name>nsctags-common-region-subcompany</short-name>
	<uri>/nsctags-common-region-subcompany</uri>

	<tag>
		<name>RegionSelect</name>
		<tag-class>com.newsicom.common.web.tag.RegionSelectTag</tag-class>
		<body-content>empty</body-content>

		<attribute>
			<name>id</name>
			<required>true</required>
			<rtexprvalue>false</rtexprvalue>
			<type>java.lang.String</type>
		</attribute>
		
		<attribute>
			<name>name</name>
			<required>true</required>
			<rtexprvalue>false</rtexprvalue>
			<type>java.lang.String</type>
		</attribute>
		
		<attribute>
			<name>subcompanySelectId</name>
			<required>true</required>
			<rtexprvalue>false</rtexprvalue>
			<type>java.lang.String</type>
		</attribute>
		
		<attribute>
			<name>cssClass</name>
			<required>false</required>
			<rtexprvalue>false</rtexprvalue>
			<type>java.lang.String</type>
		</attribute>
		
		<attribute>
			<name>style</name>
			<required>false</required>
			<rtexprvalue>false</rtexprvalue>
			<type>java.lang.String</type>
		</attribute>
		<attribute>
			<name>hasSaleFlg</name>
			<required>true</required>
			<rtexprvalue>false</rtexprvalue>
			<type>java.lang.Boolean</type>
		</attribute>
	</tag>
	
	<tag>
		<name>CompanySelect</name>
		<tag-class>com.newsicom.common.web.tag.CompanySelectTag</tag-class>
		<body-content>empty</body-content>

		<attribute>
			<name>id</name>
			<required>true</required>
			<rtexprvalue>false</rtexprvalue>
			<type>java.lang.String</type>
		</attribute>
		
		<attribute>
			<name>hasSaleFlg</name>
			<required>true</required>
			<rtexprvalue>false</rtexprvalue>
			<type>java.lang.Boolean</type>
		</attribute>
		
		<attribute>
			<name>name</name>
			<required>false</required>
			<rtexprvalue>false</rtexprvalue>
			<type>java.lang.String</type>
		</attribute>
		
		<attribute>
			<name>cssClass</name>
			<required>false</required>
			<rtexprvalue>false</rtexprvalue>
			<type>java.lang.String</type>
		</attribute>
		
		<attribute>
			<name>style</name>
			<required>false</required>
			<rtexprvalue>false</rtexprvalue>
			<type>java.lang.String</type>
		</attribute>
		
	</tag>
</taglib>

  HTML调用:

 

 
<%@taglib prefix="nsc" uri="/nsctags-common-region-subcompany"%>
<td class=headerlabel width=94 align=right> 安装大区 </td>
            <td width=80 align=left>
              <nsc:RegionSelect hasSaleFlg="false" subcompanySelectId="installSubcompanyId" id="installRegionId" name="installRegionId" style="width: 100px" />
            </td>
            <td class=headerlabel width=92 align=right> 安装分公司 </td>
            <td class=headerlabel width=110 align=left>
            <nsc:CompanySelect hasSaleFlg="false" id="installSubcompanyId" name="installSubcompanyId" style="width: 110px"/>	
          
 

 

分享到:
评论

相关推荐

    struts2标签写法

    这涉及到编写一个标签库描述文件(TLD),定义标签的行为,并实现对应的Java类来处理标签逻辑。 5. **使用Struts2标签的优点** - 提高可读性和可维护性:标签使得代码更清晰,降低了视图层与业务逻辑的耦合。 - ...

    Python PYQT5 VS2017 三级联动实例

    "三级联动"在GUI设计中通常指的是多级选择的交互设计,例如在下拉菜单中,一级选择会影响二级菜单的内容,二级选择又影响三级菜单,以此类推。这种设计常用于如地址选择、类别筛选等场景,使得用户能够更高效、准确...

    关于动态规划求最大子段和的Java代码写法

    关于动态规划求最大子段和的Java代码写法 本文主要讲述了使用 Java 语言实现动态规划算法来求最大子段和的代码写法。动态规划是一种非常重要的算法设计技术,它可以解决许多复杂的问题。 首先,我们需要了解什么是...

    一个java 面向对象写法的判断回文数

    一个java 面向对象字符串写法的判断回文数 假如输入非数字 会提示输入数字 利用循环写的 大家多多支持

    jQuery 自定义函数写法分享

    自定义函数写法是通过 `$.extend` 和 `$.fn.extend` 两个方法来实现的。`$.extend` 方法用于将函数合并到 jQuery 的全局对象中,而 `$.fn.extend` 方法用于将函数合并到 jQuery 的实例对象中。 例如:`$.extend({...

    Java中素数的写法

    关于Java中素数的概念,及Java代码的写法,写了几种方法

    java日历各种写法

    Java日历类是Java编程语言中处理日期和时间的核心组件,它提供了丰富的API来操作日期,包括获取、设置、比较和格式化等。在Java中,`java.util.Calendar`是抽象基类,而`java.util.GregorianCalendar`是其最常见的...

    测试JDK时的JAVA基础语句写法

    在探讨“测试JDK时的JAVA基础语句写法”这一主题时,我们不仅需要理解JDK(Java Development Kit)的基础知识,还需要掌握在特定版本下(如JDK 1.4)编写Java代码的基本语法与实践。Java作为一种广泛使用的编程语言...

    java for循环的几种写法

    "java for 循环的几种写法" 在 Java 编程语言中,for 循环是一种非常常用的循环语句,用于遍历数组、Collection 等类型的对象。在 J2SE 1.5 中,Java 引入了一种新的 for 循环语法,称为“增强的 for 循环”或...

    vue 自定义组件的写法与用法详解

    本文详细介绍了Vue自定义组件的创建方法和使用方式,通过实例代码对自定义组件的写法与用法进行了详细的解释。对于Vue的学习者和开发者来说,掌握自定义组件的创建和使用,能够更好地实现组件化开发,提高代码的复用...

    java 定时任务写法

    ### Java定时任务实现方法:Quartz API 的应用与实践 #### 一、Quartz API简介 Quartz 是一个开源项目,提供了丰富的调度功能,适用于各种Java应用中的定时任务需求。它由Michael Lipton(mwlipton@us.ibm.com)等...

    java输入输出流的两种写法

    以下是两种常见的Java输入输出流的写法及其详细解释: 1. 字节流: - **FileInputStream** 和 **FileOutputStream**:这是处理文件输入输出的基本字节流类。`FileInputStream` 用于从文件读取字节,而 `...

    ( java JDBC连接不同的数据库写法sql,oracle,mysql

    java JDBC连接不同的数据库写法sql,oracle,mysql 的很好例子

    JAVA JAP分页写法大全

    这个压缩包文件名"JAVA JAP分页写法大全"暗示了它可能包含各种不同的分页实现示例,这对于初学者来说是一个极好的学习资源。下面我们将详细探讨Java中常见的分页方法。 首先,我们要理解分页的基本概念。在处理大量...

    Java 10 大装 B 写法,看完可以出去吹牛逼了!

    Java编程语言中有许多技巧和独特写法,这些不仅可以提高代码的可读性和效率,还能让代码看起来更加专业。本文将介绍10种Java中的“装B”写法,让你的代码更加炫酷。 1. **集合初始化** 在Java中,集合初始化可以...

    关于WinCC自定义返回数组函数书写规则正确写法.rar

    为了扩展WinCC的功能,开发者常常需要编写DLL(动态链接库)文件来实现自定义功能。本教程将详细阐述如何在C++中创建一个模糊控制DLL,并在WinCC中正确调用该DLL,特别是涉及自定义返回数组函数的书写规则。 首先,...

    关于冒泡排序的写法

    冒泡排序是计算机科学中一种简单直观的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复进行直到没有再需要交换,也就是说该数列已经排序完成。这...

    Java GUI图形化界面编程

    1. GUI:Graphical User Interface 图形用户界面(相对于很久以前的”命令行界面“) 2. 作用:使用Java语言,进行...标签JComboBox-下拉列表 10.JDialog-弹框(JFrame同级标签类) 11.鼠标时间监听 12.自定义布局

    Net与Java常用代码写法对比.docx

    在.NET和Java编程中,有一些常见的代码写法差异,这些差异主要体现在语法、类型转换、枚举处理、字符串操作以及泛型集合的使用上。以下是对这两种语言在这些方面的对比和详细解释: 1. **字符串操作** - .NET中的`...

Global site tag (gtag.js) - Google Analytics