/*
* Copyright 2002-2018 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.web.servlet.tags.form;
import javax.servlet.jsp.JspException;
import org.springframework.web.bind.WebDataBinder;
The <checkboxes>
tag renders multiple HTML 'input' tags with type 'checkbox'. Intended to be used with a Collection as the AbstractMultiCheckedElementTag.getItems()
bound value.
Attribute Summary
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
delimiter
false
true
Delimiter to use between each 'input' tag with type 'checkbox'.
There is no delimiter by default.
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.
element
false
true
Specifies the HTML element that is used to enclose each 'input' tag with
type 'checkbox'. Defaults to 'span'.
htmlEscape
false
true
Enable/disable HTML escaping of rendered values.
id
false
true
HTML Standard Attribute
itemLabel
false
true
Value to be displayed as part of the 'input' tags with type 'checkbox'
items
true
true
The Collection, Map or array of objects used to generate the 'input' tags
with type 'checkbox'
itemValue
false
true
Name of the property mapped to 'value' attribute of the 'input' tags with
type 'checkbox'
lang
false
true
HTML Standard 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
tabindex
false
true
HTML Standard Attribute
title
false
true
HTML Standard Attribute
Author: Thomas Risberg, Juergen Hoeller, Mark Fisher Since: 2.5
/**
* The {@code <checkboxes>} tag renders multiple HTML 'input' tags with type 'checkbox'.
* Intended to be used with a Collection as the {@link #getItems()} bound value.
*
* <p>
* <table>
* <caption>Attribute Summary</caption>
* <thead>
* <tr>
* <th class="colFirst">Attribute</th>
* <th class="colOne">Required?</th>
* <th class="colOne">Runtime Expression?</th>
* <th class="colLast">Description</th>
* </tr>
* </thead>
* <tbody>
* <tr class="altColor">
* <td><p>accesskey</p></td>
* <td><p>false</p></td>
* <td><p>true</p></td>
* <td><p>HTML Standard Attribute</p></td>
* </tr>
* <tr class="rowColor">
* <td><p>cssClass</p></td>
* <td><p>false</p></td>
* <td><p>true</p></td>
* <td><p>HTML Optional Attribute</p></td>
* </tr>
* <tr class="altColor">
* <td><p>cssErrorClass</p></td>
* <td><p>false</p></td>
* <td><p>true</p></td>
* <td><p>HTML Optional Attribute. Used when the bound field has errors.</p></td>
* </tr>
* <tr class="rowColor">
* <td><p>cssStyle</p></td>
* <td><p>false</p></td>
* <td><p>true</p></td>
* <td><p>HTML Optional Attribute</p></td>
* </tr>
* <tr class="altColor">
* <td><p>delimiter</p></td>
* <td><p>false</p></td>
* <td><p>true</p></td>
* <td><p>Delimiter to use between each 'input' tag with type 'checkbox'.
* There is no delimiter by default.</p></td>
* </tr>
* <tr class="rowColor">
* <td><p>dir</p></td>
* <td><p>false</p></td>
* <td><p>true</p></td>
* <td><p>HTML Standard Attribute</p></td>
* </tr>
* <tr class="altColor">
* <td><p>disabled</p></td>
* <td><p>false</p></td>
* <td><p>true</p></td>
* <td><p>HTML Optional Attribute. Setting the value of this attribute to 'true'
* will disable the HTML element.</p></td>
* </tr>
* <tr class="rowColor">
* <td><p>element</p></td>
* <td><p>false</p></td>
* <td><p>true</p></td>
* <td><p>Specifies the HTML element that is used to enclose each 'input' tag with
* type 'checkbox'. Defaults to 'span'.</p></td>
* </tr>
* <tr class="altColor">
* <td><p>htmlEscape</p></td>
* <td><p>false</p></td>
* <td><p>true</p></td>
* <td><p>Enable/disable HTML escaping of rendered values.</p></td>
* </tr>
* <tr class="rowColor">
* <td><p>id</p></td>
* <td><p>false</p></td>
* <td><p>true</p></td>
* <td><p>HTML Standard Attribute</p></td>
* </tr>
* <tr class="altColor">
* <td><p>itemLabel</p></td>
* <td><p>false</p></td>
* <td><p>true</p></td>
* <td><p>Value to be displayed as part of the 'input' tags with type 'checkbox'</p></td>
* </tr>
* <tr class="rowColor">
* <td><p>items</p></td>
* <td><p>true</p></td>
* <td><p>true</p></td>
* <td><p>The Collection, Map or array of objects used to generate the 'input' tags
* with type 'checkbox'</p></td>
* </tr>
* <tr class="altColor">
* <td><p>itemValue</p></td>
* <td><p>false</p></td>
* <td><p>true</p></td>
* <td><p>Name of the property mapped to 'value' attribute of the 'input' tags with
* type 'checkbox'</p></td>
* </tr>
* <tr class="rowColor">
* <td><p>lang</p></td>
* <td><p>false</p></td>
* <td><p>true</p></td>
* <td><p>HTML Standard Attribute</p></td>
* </tr>
* <tr class="altColor">
* <td><p>onblur</p></td>
* <td><p>false</p></td>
* <td><p>true</p></td>
* <td><p>HTML Event Attribute</p></td>
* </tr>
* <tr class="rowColor">
* <td><p>onchange</p></td>
* <td><p>false</p></td>
* <td><p>true</p></td>
* <td><p>HTML Event Attribute</p></td>
* </tr>
* <tr class="altColor">
* <td><p>onclick</p></td>
* <td><p>false</p></td>
* <td><p>true</p></td>
* <td><p>HTML Event Attribute</p></td>
* </tr>
* <tr class="rowColor">
* <td><p>ondblclick</p></td>
* <td><p>false</p></td>
* <td><p>true</p></td>
* <td><p>HTML Event Attribute</p></td>
* </tr>
* <tr class="altColor">
* <td><p>onfocus</p></td>
* <td><p>false</p></td>
* <td><p>true</p></td>
* <td><p>HTML Event Attribute</p></td>
* </tr>
* <tr class="rowColor">
* <td><p>onkeydown</p></td>
* <td><p>false</p></td>
* <td><p>true</p></td>
* <td><p>HTML Event Attribute</p></td>
* </tr>
* <tr class="altColor">
* <td><p>onkeypress</p></td>
* <td><p>false</p></td>
* <td><p>true</p></td>
* <td><p>HTML Event Attribute</p></td>
* </tr>
* <tr class="rowColor">
* <td><p>onkeyup</p></td>
* <td><p>false</p></td>
* <td><p>true</p></td>
* <td><p>HTML Event Attribute</p></td>
* </tr>
* <tr class="altColor">
* <td><p>onmousedown</p></td>
* <td><p>false</p></td>
* <td><p>true</p></td>
* <td><p>HTML Event Attribute</p></td>
* </tr>
* <tr class="rowColor">
* <td><p>onmousemove</p></td>
* <td><p>false</p></td>
* <td><p>true</p></td>
* <td><p>HTML Event Attribute</p></td>
* </tr>
* <tr class="altColor">
* <td><p>onmouseout</p></td>
* <td><p>false</p></td>
* <td><p>true</p></td>
* <td><p>HTML Event Attribute</p></td>
* </tr>
* <tr class="rowColor">
* <td><p>onmouseover</p></td>
* <td><p>false</p></td>
* <td><p>true</p></td>
* <td><p>HTML Event Attribute</p></td>
* </tr>
* <tr class="altColor">
* <td><p>onmouseup</p></td>
* <td><p>false</p></td>
* <td><p>true</p></td>
* <td><p>HTML Event Attribute</p></td>
* </tr>
* <tr class="rowColor">
* <td><p>path</p></td>
* <td><p>true</p></td>
* <td><p>true</p></td>
* <td><p>Path to property for data binding</p></td>
* </tr>
* <tr class="altColor">
* <td><p>tabindex</p></td>
* <td><p>false</p></td>
* <td><p>true</p></td>
* <td><p>HTML Standard Attribute</p></td>
* </tr>
* <tr class="rowColor">
* <td><p>title</p></td>
* <td><p>false</p></td>
* <td><p>true</p></td>
* <td><p>HTML Standard Attribute</p></td>
* </tr>
* </tbody>
* </table>
*
* @author Thomas Risberg
* @author Juergen Hoeller
* @author Mark Fisher
* @since 2.5
*/
@SuppressWarnings("serial")
public class CheckboxesTag extends AbstractMultiCheckedElementTag {
@Override
protected int writeTagContent(TagWriter tagWriter) throws JspException {
super.writeTagContent(tagWriter);
if (!isDisabled()) {
// Write out the 'field was present' marker.
tagWriter.startTag("input");
tagWriter.writeAttribute("type", "hidden");
String name = WebDataBinder.DEFAULT_FIELD_MARKER_PREFIX + getName();
tagWriter.writeAttribute("name", name);
tagWriter.writeAttribute("value", processFieldValue(name, "on", "hidden"));
tagWriter.endTag();
}
return SKIP_BODY;
}
@Override
protected String getInputType() {
return "checkbox";
}
}