Select an item from a list of values, using an [X]HTML <select> element on the client side. An validation
decorations will go around the entire <select> element.
(the encoder parameter) that is used to convert between
server-side values and client-side strings. In many cases, a
can be generated automatically from
the type of the value parameter. The
service provides an encoder in these situations; it
can be overriden by binding the encoder parameter, or extended by contributing a
into the
service's configuration.
Method from org.apache.tapestry5.corelib.components.Select Detail: |
void afterRender(MarkupWriter writer) {
writer.end();
}
|
void beginRender(MarkupWriter writer) {
writer.element("select", "name", getControlName(), "id", getClientId());
validate.render(writer);
resources.renderInformalParameters(writer);
// Disabled is via a mixin
}
|
Object defaultBlankLabel() {
Messages containerMessages = resources.getContainerMessages();
String key = resources.getId() + "-blanklabel";
if (containerMessages.contains(key)) return containerMessages.get(key);
return null;
}
|
ValueEncoder defaultEncoder() {
return defaultProvider.defaultValueEncoder("value", resources);
}
|
SelectModel defaultModel() {
Class valueType = resources.getBoundType("value");
if (valueType == null) return null;
if (Enum.class.isAssignableFrom(valueType))
return new EnumSelectModel(valueType, resources.getContainerMessages());
return null;
}
|
Binding defaultValidate() {
return defaultProvider.defaultValidatorBinding("value", resources);
}
|
public boolean isRequired() {
return validate.isRequired();
}
|
void options(MarkupWriter writer) {
selectedClientValue = tracker.getInput(this);
// Use the value passed up in the form submission, if available.
// Failing that, see if there is a current value (via the value parameter), and
// convert that to a client value for later comparison.
if (selectedClientValue == null) selectedClientValue = value == null ? null : encoder.toClient(value);
if (showBlankOption())
{
writer.element("option", "value", "");
writer.write(blankLabel);
writer.end();
}
SelectModelVisitor renderer = new Renderer(writer);
model.visit(renderer);
}
Renders the options, including the blank option. |
protected void processSubmission(String elementName) {
String submittedValue = request.getParameter(elementName);
tracker.recordInput(this, submittedValue);
Object selectedValue = InternalUtils.isBlank(submittedValue)
? null :
encoder.toValue(submittedValue);
try
{
fieldValidationSupport.validate(selectedValue, resources, validate);
value = selectedValue;
}
catch (ValidationException ex)
{
tracker.recordError(this, ex.getMessage());
}
}
|
void setBlankOption(BlankOption option,
String label) {
blankOption = option;
blankLabel = label;
}
|
void setModel(SelectModel model) {
this.model = model;
blankOption = BlankOption.NEVER;
}
|
void setValidationTracker(ValidationTracker tracker) {
this.tracker = tracker;
}
|
void setValue(Object value) {
this.value = value;
}
|
void setValueEncoder(ValueEncoder encoder) {
this.encoder = encoder;
}
|