N
- the type of the numberpublic class NumberTextField<N extends Number & Comparable<N>> extends TextField<N>
TextField
for HTML5 <input> with type number.
The <input>
's value will be rendered in floating-point representation, as required by
the HTML specification. Use a simple
TextField
to use a locale specific conversion of numbers.
Automatically validates the input against the configured min
and
max
attributes. If any of them is null
then respective
MIN_VALUE or MAX_VALUE for the number type is used. If the number type has no minimum and/or
maximum value then Double.MIN_VALUE
and Double.MAX_VALUE
are used respectfully.
AbstractTextComponent.ITextFormatProvider
Modifier and Type | Field and Description |
---|---|
static Double |
ANY
Use this as a marker of step attribute value "any"
Because the w3c spec requires step to be a non-negative digit
greater than zero we use zero as delegate for "any" keyword.
|
FLAG_CONVERT_EMPTY_INPUT_STRING_TO_NULL, VALUE_SEPARATOR
ENABLE, FLAG_AFTER_RENDERING, FLAG_INITIALIZED, FLAG_PREPARED_FOR_RENDER, FLAG_REMOVING_FROM_HIERARCHY, FLAG_RENDERING, FLAG_RESERVED1, FLAG_RESERVED2, FLAG_RESERVED3, FLAG_RESERVED4, FLAG_RESERVED5, FLAG_RESERVED8, PARENT_PATH, PATH_SEPARATOR, RENDER, RFLAG_CONTAINER_DEQUEING
Constructor and Description |
---|
NumberTextField(String id)
Construct.
|
NumberTextField(String id,
Class<N> type)
Construct.
|
NumberTextField(String id,
IModel<N> model)
Construct.
|
NumberTextField(String id,
IModel<N> model,
Class<N> type)
Construct.
|
Modifier and Type | Method and Description |
---|---|
void |
convertInput()
Always use
Locale.ENGLISH to parse the input. |
protected String[] |
getInputTypes()
Subclass should override this method if this textfield is mapped on a different input type as
text.
|
protected String |
getModelValue()
The formatting for
Locale.ENGLISH might not be compatible with HTML (e.g. |
protected void |
onComponentTag(ComponentTag tag)
Processes the component tag.
|
protected void |
onConfigure()
Called once per request on components before they are about to be rendered.
|
NumberTextField<N> |
setMaximum(IModel<N> maximum)
Sets the maximum allowed value
|
NumberTextField<N> |
setMaximum(N maximum)
Sets the maximum allowed value
|
NumberTextField<N> |
setMinimum(IModel<N> minimum)
Sets the minimum allowed value
|
NumberTextField<N> |
setMinimum(N minimum)
Sets the minimum allowed value
|
NumberTextField<N> |
setStep(IModel<N> step)
Sets the step attribute
|
NumberTextField<N> |
setStep(N step)
Sets the step attribute
|
getConvertEmptyInputStringToNull, isInputNullable, onBeforeRender, setConvertEmptyInputStringToNull
add, add, checkRequired, clearInput, convertValue, error, getConvertedInput, getDefaultLabel, getDefaultLabel, getForm, getInput, getInputAsArray, getInputName, getModel, getModelObject, getRawInput, getType, getValidatorKeyPrefix, getValidators, getValue, hasRawInput, inputAsInt, inputAsInt, inputAsIntArray, inputChanged, internalOnModelChanged, invalid, isMultiPart, isRequired, isValid, newValidatable, newValidationError, onDetach, onDisabled, onInvalid, onRequired, onValid, processChildren, processInput, remove, reportRequiredError, setConvertedInput, setLabel, setModel, setModelObject, setModelValue, setRequired, setType, shouldTrimInput, trim, updateAutoLabels, updateCollectionModel, updateModel, valid, validate, validateRequired, validateValidators, visitComponentsPostOrder, visitFormComponentsPostOrder
getLabel
getWebApplication, getWebPage, getWebRequest, getWebResponse, getWebSession
add, addDequeuedComponent, addOrReplace, autoAdd, canDequeueTag, contains, dequeue, dequeue, dequeuePreamble, findChildComponent, findComponentToDequeue, get, get, getAssociatedMarkup, getAssociatedMarkupStream, getMarkup, getMarkupType, getRegionMarkup, internalAdd, internalInitialize, iterator, iterator, newDequeueContext, onAfterRenderChildren, onComponentTagBody, onInitialize, onRender, queue, remove, remove, removeAll, renderAll, renderAssociatedMarkup, renderNext, replace, setDefaultModel, size, swap, toString, toString, visitChildren, visitChildren, visitChildren, visitChildren
add, addStateChange, afterRender, beforeRender, canCallListenerInterface, canCallListenerInterfaceAfterExpiry, checkComponentTag, checkComponentTagAttribute, checkHierarchyChange, clearOriginalDestination, configure, continueToOriginalDestination, createConverter, debug, detach, detachModel, detachModels, determineVisibility, error, exceptionMessage, fatal, findMarkupStream, findPage, findParent, findParentWithAssociatedMarkup, getAjaxRegionMarkupId, getApplication, getBehaviorById, getBehaviorId, getBehaviors, getBehaviors, getClassRelativePath, getConverter, getDefaultModel, getDefaultModelObject, getDefaultModelObjectAsString, getDefaultModelObjectAsString, getEscapeModelStrings, getFeedbackMessages, getFlag, getId, getInnermostModel, getInnermostModel, getLocale, getLocalizer, getMarkup, getMarkupAttributes, getMarkupId, getMarkupId, getMarkupIdFromMarkup, getMarkupIdImpl, getMarkupSourcingStrategy, getMetaData, getModelComparator, getOutputMarkupId, getOutputMarkupPlaceholderTag, getPage, getPageRelativePath, getParent, getPath, getRenderBodyOnly, getRequest, getRequestCycle, getRequestFlag, getResponse, getSession, getSizeInBytes, getStatelessHint, getString, getString, getString, getStyle, getVariation, hasBeenRendered, hasErrorMessage, hasFeedbackMessage, info, initModel, internalPrepareForRender, internalRenderComponent, internalRenderHead, isActionAuthorized, isAuto, isBehaviorAccepted, isEnableAllowed, isEnabled, isEnabledInHierarchy, isIgnoreAttributeModifier, isRenderAllowed, isRendering, isStateless, isVersioned, isVisibilityAllowed, isVisible, isVisibleInHierarchy, markRendering, modelChanged, modelChanging, newMarkupSourcingStrategy, onAfterRender, onEvent, onModelChanged, onModelChanging, onReAdd, onRemove, prepareForRender, redirectToInterceptPage, remove, remove, render, renderComponentTag, rendered, renderHead, renderHead, renderPlaceholderTag, replaceComponentTagBody, replaceWith, sameInnermostModel, sameInnermostModel, send, setAuto, setDefaultModelObject, setEnabled, setEscapeModelStrings, setFlag, setIgnoreAttributeModifier, setMarkup, setMarkupId, setMarkupIdImpl, setMetaData, setOutputMarkupId, setOutputMarkupPlaceholderTag, setParent, setRenderBodyOnly, setRequestFlag, setResponsePage, setResponsePage, setResponsePage, setVersioned, setVisibilityAllowed, setVisible, success, urlFor, urlFor, urlFor, urlFor, urlFor, visitParents, visitParents, warn, wrap
public static final Double ANY
public NumberTextField(String id)
id
- The component idpublic NumberTextField(String id, Class<N> type)
id
- The component idtype
- The type to use when updating the model for this text fieldpublic NumberTextField(String id, IModel<N> model)
id
- The component idmodel
- The input valuepublic NumberTextField<N> setMinimum(N minimum)
minimum
- the minimum allowed valuepublic NumberTextField<N> setMaximum(N maximum)
maximum
- the maximum allowed valuepublic NumberTextField<N> setStep(N step)
step
- the step attributepublic NumberTextField<N> setMinimum(IModel<N> minimum)
minimum
- the minimum allowed valuepublic NumberTextField<N> setMaximum(IModel<N> maximum)
maximum
- the maximum allowed valuepublic NumberTextField<N> setStep(IModel<N> step)
step
- the step attributeprotected void onConfigure()
Component
Overrides must call super.onConfigure()
, usually before any other code
NOTE: Component hierarchy should not be modified inside this method, instead it should be
done in Component.onBeforeRender()
NOTE: Why this method is preferrable to directly overriding Component.isVisible()
and
Component.isEnabled()
? Because those methods are called multiple times even for processing of
a single request. If they contain expensive logic they can slow down the response time of the
entire page. Further, overriding those methods directly on form components may lead to
inconsistent or unexpected state depending on when those methods are called in the form
processing workflow. It is a better practice to push changes to state rather than pull.
NOTE: If component's visibility or another property depends on another component you may call
other.configure()
followed by other.isVisible()
as mentioned in
Component.configure()
javadoc.
NOTE: Why should Component.onBeforeRender()
not be used for this? Because if a component's
visibility is controlled inside Component.onBeforeRender()
, once invisible the component will
never become visible again.
onConfigure
in class Component
protected void onComponentTag(ComponentTag tag)
TextField
onComponentTag
in class TextField<N extends Number & Comparable<N>>
tag
- Tag to modifyComponent.onComponentTag(ComponentTag)
protected String[] getInputTypes()
TextField
getInputTypes
in class TextField<N extends Number & Comparable<N>>
protected String getModelValue()
Locale.ENGLISH
might not be compatible with HTML (e.g. group
digits), thus use Objects.stringValue(Object)
instead.getModelValue
in class FormComponent<N extends Number & Comparable<N>>
public void convertInput()
Locale.ENGLISH
to parse the input.convertInput
in class AbstractTextComponent<N extends Number & Comparable<N>>
FormComponent.convertInput()
Copyright © 2006–2017 Apache Software Foundation. All rights reserved.