public class DateTimeConverter extends Object implements Converter, PartialStateHolder
Converter implementation for
java.util.Date values.
The getAsObject() method parses a String into a java.util.Date, according to the following
algorithm:
null. Otherwise, trim leading and trailing whitespace
before proceeding.null.locale property is not null, use that Locale for managing parsing. Otherwise,
use the Locale from the UIViewRoot.pattern has been specified, its syntax must conform the rules specified by
java.text.SimpleDateFormat or java.time.format.DateTimeFormatter. Which of these two formatters is used depends on the value of
type. Such a pattern will be used to parse, and the type, dateStyle, and
timeStyle properties will be ignored, unless the value of type is one of the java.time specific values listed in setType(java.lang.String). In this case,
DateTimeFormatter.ofPattern(String, Locale) must be called, passing the value of pattern as the first
argument and the current Locale as the second argument, and this formatter must be used to parse the incoming
value.pattern has not been specified, parsing will be based on the type property, which
expects a date value, a time value, both, or one of several values specific to
classes in java.time as listed in setType(java.lang.String). Any date and time values included will be parsed
in accordance to the styles specified by dateStyle and timeStyle, respectively.timezone has been specified, it must be passed to the underlying DateFormat
instance. Otherwise the "GMT" timezone is used.
The getAsString() method expects a value of type java.util.Date (or a subclass), and
creates a formatted String according to the following algorithm:
locale property is not null, use that Locale for managing formatting. Otherwise,
use the Locale from the UIViewRoot.timezone has been specified, it must be passed to the underlying DateFormat
instance. Otherwise the "GMT" timezone is used.pattern has been specified, its syntax must conform the rules specified by
java.text.SimpleDateFormat or java.time.format.DateTimeFormatter. Which of these two formatters is used depends on the value of
type. Such a pattern will be used to format, and the type, dateStyle, and
timeStyle properties will be ignored, unless the value of type is one of the java.time specific values listed in setType(java.lang.String). In this case, DateTimeFormatter.ofPattern(String, Locale) must be called, passing the value of pattern as the first
argument and the current Locale as the second argument, and this formatter must be used to format the
outgoing value.pattern has not been specified, formatting will be based on the type property,
which includes a date value, a time value, both or into the formatted String. Any date and time values included will
be formatted in accordance to the styles specified by dateStyle and timeStyle,
respectively.| Modifier and Type | Field and Description |
|---|---|
static String |
CONVERTER_ID
The standard converter id for this converter.
|
static String |
DATE_ID
The message identifier of the
FacesMessage to be created if the conversion to
Date fails. |
static String |
DATETIME_ID
The message identifier of the
FacesMessage to be created if the conversion to
DateTime fails. |
static String |
STRING_ID
The message identifier of the
FacesMessage to be created if the conversion of the
DateTime value to String fails. |
static String |
TIME_ID
The message identifier of the
FacesMessage to be created if the conversion to
Time fails. |
DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE_PARAM_NAME| Constructor and Description |
|---|
DateTimeConverter() |
| Modifier and Type | Method and Description |
|---|---|
void |
clearInitialState()
Reset the PartialStateHolder to a non-delta tracking state. |
Object |
getAsObject(FacesContext context,
UIComponent component,
String value)
Convert the specified string value, which is associated with the specified
UIComponent, into a model data object that is appropriate for being stored during the
Process Validations phase of the request processing lifecycle. |
String |
getAsString(FacesContext context,
UIComponent component,
Object value)
Convert the specified model object value, which is associated with the specified
UIComponent, into a String
that is suitable for being included in the response generated during the Render Response phase of the
request processing lifeycle. |
String |
getDateStyle()
Return the style to be used to format or parse dates.
|
Locale |
getLocale()
Return the
Locale to be used when parsing or formatting dates and times. |
String |
getPattern()
Return the format pattern to be used when formatting and parsing dates and times.
|
String |
getTimeStyle()
Return the style to be used to format or parse times.
|
TimeZone |
getTimeZone()
Return the
TimeZone used to interpret a time value. |
String |
getType()
Return the type of value to be formatted or parsed.
|
boolean |
initialStateMarked()
Return |
boolean |
isTransient()
If true, the Object implementing this interface must not participate in state saving or restoring.
|
void |
markInitialState()
The runtime must ensure that the |
void |
restoreState(FacesContext context,
Object state)
Perform any processing required to restore the state from the entries
in the state Object.
|
Object |
saveState(FacesContext context)
Gets the state of the instance as a
Serializable Object. |
void |
setDateStyle(String dateStyle)
Set the style to be used to format or parse dates.
|
void |
setLocale(Locale locale)
Set the
Locale to be used when parsing or formatting dates and times. |
void |
setPattern(String pattern)
Set the format pattern to be used when formatting and parsing dates and times.
|
void |
setTimeStyle(String timeStyle)
Set the style to be used to format or parse times.
|
void |
setTimeZone(TimeZone timeZone)
Set the
TimeZone used to interpret a time value. |
void |
setTransient(boolean transientFlag)
Denotes whether or not the Object implementing this interface must or
must not participate in state saving or restoring.
|
void |
setType(String type)
Set the type of value to be formatted or parsed.
|
public static final String CONVERTER_ID
The standard converter id for this converter.
public static final String DATE_ID
The message identifier of the FacesMessage to be created if the conversion to
Date fails. The message format string for this message may optionally include the following
placeholders:
{0} replaced by the unconverted value.{1} replaced by an example value.{2} replaced by a String whose value is the label of the input component that produced
this message.public static final String TIME_ID
The message identifier of the FacesMessage to be created if the conversion to
Time fails. The message format string for this message may optionally include the following
placeholders:
{0} replaced by the unconverted value.{1} replaced by an example value.{2} replaced by a String whose value is the label of the input component that produced
this message.public static final String DATETIME_ID
The message identifier of the FacesMessage to be created if the conversion to
DateTime fails. The message format string for this message may optionally include the following
placeholders:
{0} replaced by the unconverted value.{1} replaced by an example value.{2} replaced by a String whose value is the label of the input component that produced
this message.public static final String STRING_ID
The message identifier of the FacesMessage to be created if the conversion of the
DateTime value to String fails. The message format string for this message may optionally
include the following placeholders:
{0} relaced by the unconverted value.{1} replaced by a String whose value is the label of the input component that produced
this message.public String getDateStyle()
Return the style to be used to format or parse dates. If not set, the default value, default, is
returned.
public void setDateStyle(String dateStyle)
Set the style to be used to format or parse dates. Valid values are default, short,
medium, long, and full. An invalid value will cause a
ConverterException when getAsObject() or getAsString() is called.
dateStyle - The new style codepublic Locale getLocale()
Return the Locale to be used when parsing or formatting dates and times. If not explicitly set, the
Locale stored in the UIViewRoot for the current request is returned.
Localepublic void setLocale(Locale locale)
Set the Locale to be used when parsing or formatting dates and times. If set to null, the
Locale stored in the UIViewRoot for the current request will be
utilized.
locale - The new Locale (or null)public String getPattern()
Return the format pattern to be used when formatting and parsing dates and times.
public void setPattern(String pattern)
Set the format pattern to be used when formatting and parsing dates and times. Valid values are those supported by
java.text.SimpleDateFormat. An invalid value will cause a ConverterException when
getAsObject() or getAsString() is called.
pattern - The new format patternpublic String getTimeStyle()
Return the style to be used to format or parse times. If not set, the default value, default, is
returned.
public void setTimeStyle(String timeStyle)
Set the style to be used to format or parse times. Valid values are default, short,
medium, long, and full. An invalid value will cause a
ConverterException when getAsObject() or getAsString() is called.
timeStyle - The new style codepublic TimeZone getTimeZone()
Return the TimeZone used to interpret a time value. If not explicitly set, the default time zone of
GMT returned.
TimeZonepublic void setTimeZone(TimeZone timeZone)
Set the TimeZone used to interpret a time value.
timeZone - The new time zonepublic String getType()
Return the type of value to be formatted or parsed. If not explicitly set, the default type, date is
returned.
public void setType(String type)
Set the type of value to be formatted or parsed. Valid values are
both, date, time localDate, localDateTime, localTime, offsetTime, offsetDateTime, or zonedDateTime. The values starting with "local", "offset" and "zoned" correspond to Java
SE 8 Date Time API classes in package java.time with the name derived by upper casing the first letter.
For example, java.time.LocalDate for the value "localDate". An invalid value will
cause a ConverterException when getAsObject() or getAsString() is called.
type - The new date stylepublic Object getAsObject(FacesContext context, UIComponent component, String value)
Converter
Convert the specified string value, which is associated with the specified
UIComponent, into a model data object that is appropriate for being stored during the
Process Validations phase of the request processing lifecycle.
getAsObject in interface Convertercontext - FacesContext for the request being processedcomponent - UIComponent with which this model object value is associatedvalue - String value to be converted (may be null)null if the value to convert is null, otherwise the result of the conversionConverterException - if conversion cannot be successfully performedNullPointerException - if context or component is nullpublic String getAsString(FacesContext context, UIComponent component, Object value)
Converter
Convert the specified model object value, which is associated with the specified UIComponent, into a String
that is suitable for being included in the response generated during the Render Response phase of the
request processing lifeycle.
getAsString in interface Convertercontext - FacesContext for the request being processedcomponent - UIComponent with which this model object value is associatedvalue - Model object value to be converted (may be null)null, otherwise the result of the conversionConverterException - if conversion cannot be successfully performedNullPointerException - if context or component is nullpublic Object saveState(FacesContext context)
StateHolder
Gets the state of the instance as a Serializable Object.
If the class that implements this interface has references to instances that implement StateHolder (such as a
UIComponent with event handlers, validators, etc.) this method must call the StateHolder.saveState(jakarta.faces.context.FacesContext) method
on all those instances as well. This method must not save the state of children and facets. That is
done via the StateManager
This method must not alter the state of the implementing object. In other words, after executing this code:
Object state = component.saveState(facesContext);
component should be the same as before executing it.
The return from this method must be Serializable
saveState in interface StateHoldercontext - the Faces context.public void restoreState(FacesContext context, Object state)
StateHolderPerform any processing required to restore the state from the entries in the state Object.
If the class that implements this interface has references to instances that also implement StateHolder (such as a
UIComponent with event handlers, validators, etc.) this method must call the StateHolder.restoreState(jakarta.faces.context.FacesContext, java.lang.Object)
method on all those instances as well.
If the state argument is null, take no action and return.
restoreState in interface StateHoldercontext - the Faces context.state - the state.public boolean isTransient()
StateHolderIf true, the Object implementing this interface must not participate in state saving or restoring.
isTransient in interface StateHoldertrue if transient, false otherwise.public void setTransient(boolean transientFlag)
StateHolderDenotes whether or not the Object implementing this interface must or must not participate in state saving or restoring.
setTransient in interface StateHoldertransientFlag - boolean pass true if this Object will
not participate in state saving or restoring, otherwise pass false.public void markInitialState()
PartialStateHolder
The runtime must ensure that the PartialStateHolder.markInitialState() method is called on each instance of this interface in the
view at the appropriate time to indicate the component is in its initial state. The implementor of the interface must
ensure that PartialStateHolder.initialStateMarked() returns true from the time markInitialState() is
called until PartialStateHolder.clearInitialState() is called, after which time initialStateMarked() must return
false. Also, during the time that the instance returns true from
initialStateMarked(), the implementation must return only the state that has changed in its
implementation of StateHolder.saveState(jakarta.faces.context.FacesContext).
markInitialState in interface PartialStateHolderpublic boolean initialStateMarked()
PartialStateHolder
Return true if delta state changes are being tracked, otherwise false
initialStateMarked in interface PartialStateHoldertrue if the initial state is marked, false otherwise.public void clearInitialState()
PartialStateHolderReset the PartialStateHolder to a non-delta tracking state.
clearInitialState in interface PartialStateHolderCopyright © 2018,2020 Eclipse Foundation.
Use is subject to license terms.