📄 jscalendartag.java
字号:
package org.opencustomer.webapp.taglib;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Locale;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;
import org.apache.struts.taglib.TagUtils;
import org.opencustomer.framework.webapp.util.MessageUtil;
import org.opencustomer.util.configuration.UserConfiguration;
import org.opencustomer.webapp.Globals;
public final class JsCalendarTag extends TagSupport
{
private static final long serialVersionUID = 428305407335964656L;
private String input;
private String button;
private String formatKey;
private boolean disabled;
@Override
public int doStartTag() throws JspException
{
UserConfiguration conf = (UserConfiguration)pageContext.getSession().getAttribute(Globals.CONFIGURATION_KEY);
boolean isDisabled = disabled;
if(pageContext.getAttribute("i_panel_editable") != null) {
if(pageContext.getAttribute("i_panel_editable").equals(Boolean.FALSE))
isDisabled = true;
}
if(!isDisabled) {
StringBuilder builder = new StringBuilder();
builder.append("<script type=\"text/javascript\">");
if(pageContext.getAttribute("jsCalendar_isLocaleInitialized") == null) {
initLocale(builder);
pageContext.setAttribute("jsCalendar_isLocaleInitialized", Boolean.TRUE);
}
builder.append("Calendar.setup(");
builder.append("{");
builder.append("inputField : \""+input+"\",");
builder.append("button : \""+button+"\",");
if(formatKey != null) {
String jsFormat = getJsFormat(formatKey);
builder.append("ifFormat : \""+jsFormat+"\",");
if(jsFormat.contains("%M")
||jsFormat.contains("%H")
|| jsFormat.contains("%k")
|| jsFormat.contains("%I")
|| jsFormat.contains("%l")) {
builder.append("showsTime : true,");
builder.append("singleClick : false,");
}
if(jsFormat.contains("%I")
|| jsFormat.contains("%l")) {
builder.append("timeFormat : \"12\",");
} else {
builder.append("timeFormat : \"24\",");
}
}
builder.append("step : 5,");
builder.append("firstDay : "+getJsFirstDayOfWeek(conf.getIntValue(UserConfiguration.Key.CALENDAR_FIRST_DAY_OF_WEEK)));
builder.append("}");
builder.append(");");
builder.append("</script>");
TagUtils.getInstance().write(pageContext, builder.toString());
}
return super.doStartTag();
}
private void initLocale(StringBuilder builder) {
Locale locale = (Locale)pageContext.getSession().getAttribute(org.apache.struts.Globals.LOCALE_KEY);
HttpServletRequest request = (HttpServletRequest)pageContext.getRequest();
//MessageUtil.message(request, formatKey);
Calendar cal = GregorianCalendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("EEEE", locale);
builder.append("\nCalendar._DN = new Array");
cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
builder.append("(\""+sdf.format(cal.getTime())+"\",");
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
builder.append(" \""+sdf.format(cal.getTime())+"\",");
cal.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);
builder.append(" \""+sdf.format(cal.getTime())+"\",");
cal.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY);
builder.append(" \""+sdf.format(cal.getTime())+"\",");
cal.set(Calendar.DAY_OF_WEEK, Calendar.THURSDAY);
builder.append(" \""+sdf.format(cal.getTime())+"\",");
cal.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);
builder.append(" \""+sdf.format(cal.getTime())+"\",");
cal.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);
builder.append(" \""+sdf.format(cal.getTime())+"\",");
cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
builder.append(" \""+sdf.format(cal.getTime())+"\");\n");
sdf = new SimpleDateFormat("EE", locale);
builder.append("Calendar._SDN = new Array");
cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
builder.append("(\""+sdf.format(cal.getTime())+"\",");
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
builder.append(" \""+sdf.format(cal.getTime())+"\",");
cal.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);
builder.append(" \""+sdf.format(cal.getTime())+"\",");
cal.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY);
builder.append(" \""+sdf.format(cal.getTime())+"\",");
cal.set(Calendar.DAY_OF_WEEK, Calendar.THURSDAY);
builder.append(" \""+sdf.format(cal.getTime())+"\",");
cal.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);
builder.append(" \""+sdf.format(cal.getTime())+"\",");
cal.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);
builder.append(" \""+sdf.format(cal.getTime())+"\",");
cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
builder.append(" \""+sdf.format(cal.getTime())+"\");\n");
// set to first of month
cal.set(Calendar.DAY_OF_MONTH, 1);
sdf = new SimpleDateFormat("MMMM", locale);
builder.append("Calendar._MN = new Array");
cal.set(Calendar.MONTH, Calendar.JANUARY);
builder.append("(\""+sdf.format(cal.getTime())+"\",");
cal.set(Calendar.MONTH, Calendar.FEBRUARY);
builder.append(" \""+sdf.format(cal.getTime())+"\",");
cal.set(Calendar.MONTH, Calendar.MARCH);
builder.append(" \""+sdf.format(cal.getTime())+"\",");
cal.set(Calendar.MONTH, Calendar.APRIL);
builder.append(" \""+sdf.format(cal.getTime())+"\",");
cal.set(Calendar.MONTH, Calendar.MAY);
builder.append(" \""+sdf.format(cal.getTime())+"\",");
cal.set(Calendar.MONTH, Calendar.JUNE);
builder.append(" \""+sdf.format(cal.getTime())+"\",");
cal.set(Calendar.MONTH, Calendar.JULY);
builder.append(" \""+sdf.format(cal.getTime())+"\",");
cal.set(Calendar.MONTH, Calendar.AUGUST);
builder.append(" \""+sdf.format(cal.getTime())+"\",");
cal.set(Calendar.MONTH, Calendar.SEPTEMBER);
builder.append(" \""+sdf.format(cal.getTime())+"\",");
cal.set(Calendar.MONTH, Calendar.OCTOBER);
builder.append(" \""+sdf.format(cal.getTime())+"\",");
cal.set(Calendar.MONTH, Calendar.NOVEMBER);
builder.append(" \""+sdf.format(cal.getTime())+"\",");
cal.set(Calendar.MONTH, Calendar.DECEMBER);
builder.append(" \""+sdf.format(cal.getTime())+"\");\n");
sdf = new SimpleDateFormat("MMM", locale);
builder.append("Calendar._SMN = new Array");
cal.set(Calendar.MONTH, Calendar.JANUARY);
builder.append("(\""+sdf.format(cal.getTime())+"\",");
cal.set(Calendar.MONTH, Calendar.FEBRUARY);
builder.append(" \""+sdf.format(cal.getTime())+"\",");
cal.set(Calendar.MONTH, Calendar.MARCH);
builder.append(" \""+sdf.format(cal.getTime())+"\",");
cal.set(Calendar.MONTH, Calendar.APRIL);
builder.append(" \""+sdf.format(cal.getTime())+"\",");
cal.set(Calendar.MONTH, Calendar.MAY);
builder.append(" \""+sdf.format(cal.getTime())+"\",");
cal.set(Calendar.MONTH, Calendar.JUNE);
builder.append(" \""+sdf.format(cal.getTime())+"\",");
cal.set(Calendar.MONTH, Calendar.JULY);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -