ParseDateSupportpublic abstract class ParseDateSupport extends javax.servlet.jsp.tagext.BodyTagSupport Support for tag handlers for <parseDate>, the date and time
parsing tag in JSTL 1.0. |
Fields Summary |
---|
private static final String | DATE | private static final String | TIME | private static final String | DATETIME | protected String | value | protected boolean | valueSpecified | protected String | type | protected String | pattern | protected Object | timeZone | protected Locale | parseLocale | protected String | dateStyle | protected String | timeStyle | private String | var | private int | scope |
Constructors Summary |
---|
public ParseDateSupport() // 'scope' attribute
//*********************************************************************
// Constructor and initialization
super();
init();
|
Methods Summary |
---|
private java.text.DateFormat | createParser(java.util.Locale loc)
DateFormat parser = null;
if ((type == null) || DATE.equalsIgnoreCase(type)) {
parser = DateFormat.getDateInstance(
Util.getStyle(dateStyle, "PARSE_DATE_INVALID_DATE_STYLE"),
loc);
} else if (TIME.equalsIgnoreCase(type)) {
parser = DateFormat.getTimeInstance(
Util.getStyle(timeStyle, "PARSE_DATE_INVALID_TIME_STYLE"),
loc);
} else if (DATETIME.equalsIgnoreCase(type)) {
parser = DateFormat.getDateTimeInstance(
Util.getStyle(dateStyle, "PARSE_DATE_INVALID_DATE_STYLE"),
Util.getStyle(timeStyle, "PARSE_DATE_INVALID_TIME_STYLE"),
loc);
} else {
throw new JspException(
Resources.getMessage("PARSE_DATE_INVALID_TYPE", type));
}
parser.setLenient(false);
return parser;
| public int | doEndTag()
String input = null;
// determine the input by...
if (valueSpecified) {
// ... reading 'value' attribute
input = value;
} else {
// ... retrieving and trimming our body
if (bodyContent != null && bodyContent.getString() != null)
input = bodyContent.getString().trim();
}
if ((input == null) || input.equals("")) {
if (var != null) {
pageContext.removeAttribute(var, scope);
}
return EVAL_PAGE;
}
/*
* Set up parsing locale: Use locale specified via the 'parseLocale'
* attribute (if present), or else determine page's locale.
*/
Locale locale = parseLocale;
if (locale == null)
locale = SetLocaleSupport.getFormattingLocale(pageContext,
this,
true,
false);
if (locale == null) {
throw new JspException(
Resources.getMessage("PARSE_DATE_NO_PARSE_LOCALE"));
}
// Create parser
DateFormat parser = createParser(locale);
// Apply pattern, if present
if (pattern != null) {
try {
((SimpleDateFormat) parser).applyPattern(pattern);
} catch (ClassCastException cce) {
parser = new SimpleDateFormat(pattern, locale);
}
}
// Set time zone
TimeZone tz = null;
if ((timeZone instanceof String) && ((String) timeZone).equals("")) {
timeZone = null;
}
if (timeZone != null) {
if (timeZone instanceof String) {
tz = TimeZone.getTimeZone((String) timeZone);
} else if (timeZone instanceof TimeZone) {
tz = (TimeZone) timeZone;
} else {
throw new JspException(
Resources.getMessage("PARSE_DATE_BAD_TIMEZONE"));
}
} else {
tz = TimeZoneSupport.getTimeZone(pageContext, this);
}
if (tz != null) {
parser.setTimeZone(tz);
}
// Parse date
Date parsed = null;
try {
parsed = parser.parse(input);
} catch (ParseException pe) {
throw new JspException(
Resources.getMessage("PARSE_DATE_PARSE_ERROR", input),
pe);
}
if (var != null) {
pageContext.setAttribute(var, parsed, scope);
} else {
try {
pageContext.getOut().print(parsed);
} catch (IOException ioe) {
throw new JspTagException(ioe.toString(), ioe);
}
}
return EVAL_PAGE;
| private void | init()
type = dateStyle = timeStyle = null;
value = pattern = var = null;
valueSpecified = false;
timeZone = null;
scope = PageContext.PAGE_SCOPE;
parseLocale = null;
| public void | release()
init();
| public void | setScope(java.lang.String scope)
this.scope = Util.getScope(scope);
| public void | setVar(java.lang.String var)
this.var = var;
|
|