public class SelectTag extends AbstractHtmlInputElementTag
<select>
tag renders an HTML 'select' element.
Supports data binding to the selected option.
Inner 'option
' tags can be rendered using one of the
approaches supported by the OptionWriter class.
Also supports the use of nested OptionTags
or
(typically one) nested OptionsTag
.
Attribute | Required? | Runtime Expression? | Description |
---|---|---|---|
accesskey |
false |
true |
HTML Standard Attribute |
cssClass |
false |
true |
HTML Optional Attribute |
cssErrorClass |
false |
true |
HTML Optional Attribute. Used when the bound field has errors. |
cssStyle |
false |
true |
HTML Optional Attribute |
dir |
false |
true |
HTML Standard Attribute |
disabled |
false |
true |
HTML Optional Attribute. Setting the value of this attribute to 'true' will disable the HTML element. |
htmlEscape |
false |
true |
Enable/disable HTML escaping of rendered values. |
id |
false |
true |
HTML Standard Attribute |
itemLabel |
false |
true |
Name of the property mapped to the inner text of the 'option' tag |
items |
false |
true |
The Collection, Map or array of objects used to generate the inner 'option' tags |
itemValue |
false |
true |
Name of the property mapped to 'value' attribute of the 'option' tag |
lang |
false |
true |
HTML Standard Attribute |
multiple |
false |
true |
HTML Optional Attribute |
onblur |
false |
true |
HTML Event Attribute |
onchange |
false |
true |
HTML Event Attribute |
onclick |
false |
true |
HTML Event Attribute |
ondblclick |
false |
true |
HTML Event Attribute |
onfocus |
false |
true |
HTML Event Attribute |
onkeydown |
false |
true |
HTML Event Attribute |
onkeypress |
false |
true |
HTML Event Attribute |
onkeyup |
false |
true |
HTML Event Attribute |
onmousedown |
false |
true |
HTML Event Attribute |
onmousemove |
false |
true |
HTML Event Attribute |
onmouseout |
false |
true |
HTML Event Attribute |
onmouseover |
false |
true |
HTML Event Attribute |
onmouseup |
false |
true |
HTML Event Attribute |
path |
true |
true |
Path to property for data binding |
size |
false |
true |
HTML Optional Attribute |
tabindex |
false |
true |
HTML Standard Attribute |
title |
false |
true |
HTML Standard Attribute |
OptionTag
Modifier and Type | Field and Description |
---|---|
private static java.lang.Object |
EMPTY
Marker object for items that have been specified but resolve to null.
|
private java.lang.String |
itemLabel
The name of the property mapped to the inner text of the
'
option ' tag. |
private java.lang.Object |
items
The
Collection , Map or array of objects used to generate
the inner 'option ' tags. |
private java.lang.String |
itemValue
The name of the property mapped to the '
value ' attribute
of the 'option ' tag. |
static java.lang.String |
LIST_VALUE_PAGE_ATTRIBUTE
The
javax.servlet.jsp.PageContext attribute under
which the bound value is exposed to inner OptionTags . |
private java.lang.Object |
multiple
Indicates whether or not the '
select ' tag allows
multiple-selections. |
private java.lang.String |
size
The value of the HTML '
size ' attribute rendered
on the final 'select ' element. |
private TagWriter |
tagWriter
The
TagWriter instance that the output is being written. |
ACCESSKEY_ATTRIBUTE, DISABLED_ATTRIBUTE, ONBLUR_ATTRIBUTE, ONCHANGE_ATTRIBUTE, ONFOCUS_ATTRIBUTE, READONLY_ATTRIBUTE
CLASS_ATTRIBUTE, DIR_ATTRIBUTE, LANG_ATTRIBUTE, ONCLICK_ATTRIBUTE, ONDBLCLICK_ATTRIBUTE, ONKEYDOWN_ATTRIBUTE, ONKEYPRESS_ATTRIBUTE, ONKEYUP_ATTRIBUTE, ONMOUSEDOWN_ATTRIBUTE, ONMOUSEMOVE_ATTRIBUTE, ONMOUSEOUT_ATTRIBUTE, ONMOUSEOVER_ATTRIBUTE, ONMOUSEUP_ATTRIBUTE, STYLE_ATTRIBUTE, TABINDEX_ATTRIBUTE, TITLE_ATTRIBUTE
NESTED_PATH_VARIABLE_NAME
logger, REQUEST_CONTEXT_PAGE_ATTRIBUTE
Constructor and Description |
---|
SelectTag() |
Modifier and Type | Method and Description |
---|---|
int |
doEndTag()
Closes any block tag that might have been opened when using
nested
options . |
void |
doFinally()
|
private boolean |
forceMultiple()
Returns '
true ' if the bound value requires the
resultant 'select ' tag to be multi-select. |
protected java.lang.String |
getItemLabel()
Get the value of the '
itemLabel ' attribute. |
protected java.lang.Object |
getItems()
Get the value of the '
items ' attribute. |
protected java.lang.String |
getItemValue()
Get the value of the '
itemValue ' attribute. |
protected java.lang.Object |
getMultiple()
Get the value of the HTML '
multiple ' attribute rendered
on the final 'select ' element. |
protected java.lang.String |
getSize()
Get the value of the '
size ' attribute. |
private boolean |
isMultiple() |
void |
setItemLabel(java.lang.String itemLabel)
Set the name of the property mapped to the label (inner text) of the
'
option ' tag. |
void |
setItems(java.lang.Object items)
Set the
Collection , Map or array of objects used to
generate the inner 'option ' tags. |
void |
setItemValue(java.lang.String itemValue)
Set the name of the property mapped to the '
value '
attribute of the 'option ' tag. |
void |
setMultiple(java.lang.Object multiple)
Set the value of the HTML '
multiple ' attribute rendered
on the final 'select ' element. |
void |
setSize(java.lang.String size)
Set the value of the HTML '
size ' attribute rendered
on the final 'select ' element. |
private static boolean |
typeRequiresMultiple(java.lang.Class<?> type)
Returns '
true ' for arrays, Collections
and Maps . |
private void |
writeHiddenTagIfNecessary(TagWriter tagWriter)
If using a multi-select, a hidden element is needed to make sure all
items are correctly unselected on the server-side in response to a
null post. |
protected int |
writeTagContent(TagWriter tagWriter)
Renders the HTML '
select ' tag to the supplied
TagWriter . |
getAccesskey, getOnblur, getOnchange, getOnfocus, isDisabled, isReadonly, setAccesskey, setDisabled, setOnblur, setOnchange, setOnfocus, setReadonly, writeOptionalAttributes
getCssClass, getCssErrorClass, getCssStyle, getDir, getDynamicAttributes, getLang, getOnclick, getOndblclick, getOnkeydown, getOnkeypress, getOnkeyup, getOnmousedown, getOnmousemove, getOnmouseout, getOnmouseover, getOnmouseup, getTabindex, getTitle, isValidDynamicAttribute, resolveCssClass, setCssClass, setCssErrorClass, setCssStyle, setDir, setDynamicAttribute, setLang, setOnclick, setOndblclick, setOnkeydown, setOnkeypress, setOnkeyup, setOnmousedown, setOnmousemove, setOnmouseout, setOnmouseover, setOnmouseup, setTabindex, setTitle, writeDefaultAttributes
autogenerateId, convertToDisplayString, getBindStatus, getBoundValue, getEditor, getId, getName, getNestedPath, getPath, getPropertyEditor, getPropertyPath, processFieldValue, resolveId, setId, setPath
createTagWriter, doStartTagInternal, evaluate, getDisplayString, getDisplayString, isDefaultHtmlEscape, writeOptionalAttribute
htmlEscape, isHtmlEscape, isResponseEncodedHtmlEscape, setHtmlEscape
doCatch, doStartTag, getRequestContext
public static final java.lang.String LIST_VALUE_PAGE_ATTRIBUTE
javax.servlet.jsp.PageContext
attribute under
which the bound value is exposed to inner OptionTags
.private static final java.lang.Object EMPTY
@Nullable private java.lang.Object items
Collection
, Map
or array of objects used to generate
the inner 'option
' tags.@Nullable private java.lang.String itemValue
value
' attribute
of the 'option
' tag.@Nullable private java.lang.String itemLabel
option
' tag.@Nullable private java.lang.String size
size
' attribute rendered
on the final 'select
' element.@Nullable private java.lang.Object multiple
select
' tag allows
multiple-selections.@Nullable private TagWriter tagWriter
TagWriter
instance that the output is being written.
Only used in conjunction with nested OptionTags
.
public void setItems(@Nullable java.lang.Object items)
Collection
, Map
or array of objects used to
generate the inner 'option
' tags.
Required when wishing to render 'option
' tags from
an array, Collection
or Map
.
Typically a runtime expression.
items
- the items that comprise the options of this selection@Nullable protected java.lang.Object getItems()
items
' attribute.
May be a runtime expression.
public void setItemValue(java.lang.String itemValue)
value
'
attribute of the 'option
' tag.
Required when wishing to render 'option
' tags from
an array or Collection
.
May be a runtime expression.
@Nullable protected java.lang.String getItemValue()
itemValue
' attribute.
May be a runtime expression.
public void setItemLabel(java.lang.String itemLabel)
option
' tag.
May be a runtime expression.
@Nullable protected java.lang.String getItemLabel()
itemLabel
' attribute.
May be a runtime expression.
public void setSize(java.lang.String size)
size
' attribute rendered
on the final 'select
' element.@Nullable protected java.lang.String getSize()
size
' attribute.public void setMultiple(java.lang.Object multiple)
multiple
' attribute rendered
on the final 'select
' element.@Nullable protected java.lang.Object getMultiple()
multiple
' attribute rendered
on the final 'select
' element.protected int writeTagContent(TagWriter tagWriter) throws JspException
select
' tag to the supplied
TagWriter
.
Renders nested 'option
' tags if the
items
property is set, otherwise exposes the
bound value for the nested OptionTags
.
writeTagContent
in class AbstractFormTag
javax.servlet.jsp.tagext.Tag#doStartTag()
.JspException
private void writeHiddenTagIfNecessary(TagWriter tagWriter) throws JspException
null
post.JspException
private boolean isMultiple() throws JspException
JspException
private boolean forceMultiple() throws JspException
true
' if the bound value requires the
resultant 'select
' tag to be multi-select.JspException
private static boolean typeRequiresMultiple(java.lang.Class<?> type)
true
' for arrays, Collections
and Maps
.public int doEndTag() throws JspException
options
.JspException
public void doFinally()
doFinally
in class AbstractDataBoundFormElementTag