日期:2014-05-16 浏览次数:20402 次
?????? 小弟不才,最近做了一个关于日期显示的JSP自定义标签,具体功能:可以自定义显示起始和结束时间,也可以传入初始化参数,文件一加载便可一显示。
????? 具体说明文档如下:
SelectDateTag使用说明: 功能:该自定义标签为填充日期的下拉列表,包括三个下拉列表,分别为年月日,可以自定义设置下拉列表的起始和结束时间。 使用方法:复制com.sjdd.tag包下的BaseTag.class和SelectDateTag.class,将WEB-INF/taglib下的 SelectDateTag.tld以相同目录存放到需要配置的项目中。 在需要添加该自定义标签的JSP文件中加入如下代码: “ <%@ taglib uri="/tagslib/SelectDate" prefix="SelectDate" %> <SelectDate:SelectDate name="begin" begin="20000101" end="20201231" init="20101231"/> ” 参数说明:"name"为使用的部分下拉列表的名称及id(选填),具体形如"begin_year","begin_month","begin_day", 默认为"_year","_month","_day"; "begin"为下拉列表开始时间(选填),如果没有配置"init"也为默认时间,默认为"19900101"; "end"为下拉列表结束时间(选填),默认为"20201231"; "init"为初始化时间(选填),默认为当前日期。 范例见:WebRoot/testSelectDate.jsp 另:如果需要添加多个组件,则需要设置不同的name属性。
?
这是用于输出的父标签:
package com.sjdd.tag; import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.TagSupport; /** * * @Description:基本标签 * @author:bao * @date:Dec 19, 2010 */ public class BaseTag extends TagSupport { private static final long serialVersionUID = 1L; public int outPrint(StringBuffer content) throws JspException { if(content==null){ return EVAL_PAGE; } try { this.pageContext.getOut().write(content.toString()); } catch (Exception e) { e.printStackTrace(); throw new JspException(); } return EVAL_PAGE; } }
?
这是处理的主体标签类:
package com.sjdd.tag; import java.util.ArrayList; import java.util.List; import javax.servlet.jsp.JspException; import com.sjdd.tag.datebean.DateHandler; import com.sjdd.tag.datebean.Option; public class SelectDateTag extends BaseTag { private static final long serialVersionUID = 1L; // 下拉列表的名称,形如"begin_year","_year" private String name; // 开始日期 private int begin = 19900101; // 结束日期 private int end = 20201231; // 初始化日期,默认值为当前日期 private int init; public String getName() { if(this.name==null){ name=""; } return name; } public void setName(String name) { this.name = name; } public int getBegin() { return begin; } public void setBegin(int begin) { int initBegin = DateHandler.varifyAsInit(begin, 19900101); this.begin = initBegin; } public int getEnd() { return end; } public void setEnd(int end) { int initEnd = DateHandler.varifyAsInit(end, 20201231); this.end = initEnd; } public int getInit() { if(init==0){ init = DateHandler.getCurrentShortDate(); } return init; } public void setInit(int init) { int initial = DateHandler.varifyAsInit(init, DateHandler.getCurrentShortDate()); this.init = initial; } /** * @Description:创建年下拉列表 * @return List<Option> */ public List<Option> buildYearOptions() { List<Integer> yearList = new ArrayList<Integer>(); int beginYear = DateHandler.getYear(begin); int endYear = DateHandler.getYear(end); for (int i = beginYear; i <= endYear; i++) { yearList.add(i); } return Option.buildOptions(yearList); } public List<Option> buildMonthOptions() { List<Integer> monthList = new ArrayList<Integer>(); for (int i = 1; i <= 12; i++) { monthList.add(i); } return Option.buildOptions(monthList); } public List<Option> buildDayOptions(int year, int month) { List<Integer> yearList = new ArrayList<Integer>(); int maxDay = DateHandler.getMaxDayValue(year, month); for (int i = 1; i <= maxDay; i++) { yearList.add(i); } return Option.buildOptions(yearList); } @Override public int doEndTag() throws JspException { int yearValue = 2010; int monthValue = 1; StringBuffer content = new StringBuffer(); content.append("<select name=\"").append(getName()).append("_year\" id=\"").append(name).append( "_year\" class=\"select\" onchange='"+getName()+"changeDay();'>