カスタムラベルかすたむらべる:ドロップダウンボックス年選択コントロールドロップダウンボックス年せんたくつーる

2250 ワード

一、ラベルソースコード
public class CalendarYearTag extends BaseBodyTagSupport {
	private String name; // 
	private int negativeOffset; // 
	private int positiveOffset; // 
	private String allowEmpty = "true"; // 
	private String defaultCurrent = "false"; // 
	
	public int doEndTag() throws JspException {
		if(negativeOffset < 0) negativeOffset = 0;
		if(positiveOffset < 0) positiveOffset = 0;
		
		Calendar cal = DatetimeUtil.getCalendar();
		int curYear = cal.get(Calendar.YEAR);
		
		Map dataModel = new HashMap();
		dataModel.put("name", CommonUtil.trim(name));
		dataModel.put("negativeOffset", new Long(negativeOffset));
		dataModel.put("positiveOffset", new Long(positiveOffset));
		dataModel.put("allowEmpty", CommonUtil.trim(allowEmpty));
		dataModel.put("defaultCurrent", CommonUtil.trim(defaultCurrent));
		dataModel.put("curYear", new Long(curYear));
		
		try{
			String ret = render(pageContext.getServletContext(), dataModel, "taglib/CalendarYear.ftl");
			pageContext.getOut().println(ret);
			
		}catch(Exception ex){
			throw new JspException(ex);
		}
		
		return EVAL_PAGE;
	}
}

 
二、FTLテンプレート
<select name="${name}">
	<#if allowEmpty=="true">
		<option value=""></option>
	</#if>
	<#list curYear+positiveOffset..curYear-negativeOffset as y>
		<option value="${y?string('####')}" <#if defaultCurrent=="true" && curYear==y> selected</#if>>${y?string('####')} </option>
	</#list>
</select>

 
三、属性説明
name:コントロールの名前を指定します.negativeOffset:現在の年の往年方向に対するオフセット量.整数値でなければなりません.値が0未満の場合、0にリセットされます.positiveOffset:現在の年の将来の年方向に対するオフセット量.整数値でなければなりません.値が0未満の場合、0にリセットされます.allowEmpty:空の値を選択できるかどうかを指定します.オプションの値は、trueまたはfalseです.デフォルトはtrueです.defaultCurrent:デフォルト値が現在の年の値であるかどうかを指定します.オプションの値は、trueまたはfalseです.デフォルトはfalseです.
 
四、例
    
<cjm:calendarYear name="year" negativeOffset="5" positiveOffset="2" allowEmpty="false" defaultCurrent="true"/>