|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.apache.wicket.Component org.apache.wicket.MarkupContainer org.apache.wicket.markup.html.WebMarkupContainer org.apache.wicket.markup.html.form.LabeledWebMarkupContainer org.apache.wicket.markup.html.form.FormComponent
public abstract class FormComponent
An HTML form component knows how to validate itself. Validators that implement IValidator can be added to the component. They will be evaluated in the order they were added and the first Validator that returns an error message determines the error message returned by the component.
FormComponents are not versioned by default. If you need versioning for your FormComponents, you will need to call Form.setVersioned(true), which will set versioning on for the form and all form component children.
If this component is required and that fails, the error key that is used is the "Required"; if
the type conversion fails, it will use the key "IConverter" if the conversion failed in a
converter, or "ConversionError" if type was explicitly specified via setType(Class)
or a
IPropertyReflectionAwareModel
was used. Notice that both "IConverter" and
"ConversionError" have a more specific variant of "key.classname" where classname is the type
that we failed to convert to. Classname is not full qualified, so only the actual name of the
class is used.
Property expressions that can be used in error messages are:
Nested Class Summary | |
---|---|
static class |
FormComponent.AbstractVisitor
Visitor for traversing form components |
static interface |
FormComponent.IVisitor
Typesafe interface to code that is called when visiting a form component. |
Nested classes/interfaces inherited from class org.apache.wicket.Component |
---|
Component.ComponentModelChange, Component.EnabledChange, Component.VisibilityChange |
Field Summary | |
---|---|
protected static short |
FLAG_CONVERT_EMPTY_INPUT_STRING_TO_NULL
Make empty strings null values boolean. |
static java.lang.String |
VALUE_SEPARATOR
The value separator |
Fields inherited from class org.apache.wicket.Component |
---|
ENABLE, FLAG_RESERVED1, FLAG_RESERVED2, FLAG_RESERVED3, FLAG_RESERVED4, FLAG_RESERVED5, FLAG_RESERVED6, FLAG_RESERVED7, FLAG_RESERVED8, PATH_SEPARATOR, RENDER |
Constructor Summary | |
---|---|
FormComponent(java.lang.String id)
|
|
FormComponent(java.lang.String id,
IModel model)
|
Method Summary | |
---|---|
FormComponent |
add(IValidator validator)
Adds a validator to this form component. |
boolean |
checkRequired()
Checks if the form component's 'required' requirement is met by first checking isRequired() to see if it has to check for requirement. |
void |
clearInput()
Clears the user input. |
protected void |
convertInput()
Converts and validates the conversion of the raw input string into the object specified by getType() and records any errors. |
protected java.lang.Object |
convertValue(java.lang.String[] value)
Subclasses should overwrite this if the conversion is not done through the type field and the IConverter. |
void |
error(IValidationError error)
Reports a validation error against this form component. |
protected java.util.List |
getBehaviors(java.lang.Class type)
Gets the subset of the currently coupled IBehavior s that are of the provided type as
a unmodifiable list or null if there are no behaviors attached. |
java.lang.Object |
getConvertedInput()
Gets the converted input. |
Form |
getForm()
|
java.lang.String |
getInput()
Gets the request parameter for this component as a string. |
java.lang.String[] |
getInputAsArray()
Gets the request parameters for this component as strings. |
java.lang.String |
getInputName()
Gets the string to be used for the name attribute of the form element. |
protected java.lang.String |
getModelValue()
|
java.lang.String |
getRawInput()
Use hasRawInput() to check if this component has raw input because null can mean 2 things: It doesn't have rawinput or the rawinput is really null. |
java.lang.Class |
getType()
|
java.lang.String |
getValidatorKeyPrefix()
|
java.util.List |
getValidators()
Gets an unmodifiable list of validators for this FormComponent. |
java.lang.String |
getValue()
Gets current value for a form component, which can be either input data entered by the user, or the component's model object if no input was provided. |
boolean |
hasRawInput()
Returns whether this component has raw input. |
protected int |
inputAsInt()
Gets the request parameter for this component as an int. |
protected int |
inputAsInt(int defaultValue)
Gets the request parameter for this component as an int, using the given default in case no corresponding request parameter was found. |
protected int[] |
inputAsIntArray()
Gets the request parameters for this component as ints. |
void |
inputChanged()
Used by Form to tell the FormComponent that a new user input is available |
protected void |
internalOnModelChanged()
THIS METHOD IS NOT PART OF THE WICKET PUBLIC API. |
void |
invalid()
Indicate that validation of this form component failed. |
boolean |
isInputNullable()
Gets whether this component's input can be null. |
boolean |
isMultiPart()
|
boolean |
isPersistent()
|
boolean |
isRequired()
|
boolean |
isValid()
Gets whether this component is 'valid'. |
protected void |
onComponentTag(ComponentTag tag)
Processes the component tag. |
protected void |
onDetach()
Sets the temporary converted input value to null. |
protected void |
onDisabled(ComponentTag tag)
Called by onComponentTag(ComponentTag) when the component is disabled. |
protected void |
onInvalid()
Handle invalidation |
protected void |
onValid()
Handle validation |
boolean |
processChildren()
Should children be traversed during visiting or should only the siblings be processed. |
void |
processInput()
This method will retrieve the request parameter, validate it, and if valid update the model. |
void |
setConvertedInput(java.lang.Object convertedInput)
Sets the converted input. |
FormComponent |
setLabel(IModel labelModel)
The value will be made available to the validator property by means of ${label}. |
void |
setModelValue(java.lang.String value)
Deprecated. call or override setModelValue(String[]) |
void |
setModelValue(java.lang.String[] value)
Sets the value for a form component. |
FormComponent |
setPersistent(boolean persistent)
Sets whether this component is to be persisted. |
FormComponent |
setRequired(boolean required)
Sets the required flag |
FormComponent |
setType(java.lang.Class type)
Sets the type that will be used when updating the model for this component. |
protected boolean |
shouldTrimInput()
Determines whether or not this component should trim its input prior to processing it. |
protected boolean |
supportsPersistence()
|
protected java.lang.String |
trim(java.lang.String string)
Trims the input according to shouldTrimInput() |
void |
updateModel()
Updates this components model from the request, it expects that the object is already converted through the convertInput() call that is called by the validate() method when a form is being processed. |
void |
valid()
Called to indicate that the user input is valid. |
void |
validate()
Performs full validation of the form component, which consists of calling validateRequired(), convertInput(), and validateValidators(). |
protected void |
validateRequired()
Checks if the raw input value is not null if this component is required. |
protected void |
validateValidators()
Validates this component using the component's validators. |
static void |
visitFormComponentsPostOrder(Component component,
FormComponent.IVisitor visitor)
Visits any form components inside component if it is a container, or component itself if it is itself a form component |
Methods inherited from class org.apache.wicket.markup.html.form.LabeledWebMarkupContainer |
---|
getLabel, setLabelInternal |
Methods inherited from class org.apache.wicket.markup.html.WebMarkupContainer |
---|
getMarkupType, getWebPage |
Methods inherited from class org.apache.wicket.MarkupContainer |
---|
add, addOrReplace, autoAdd, autoAdd, contains, findMarkupStream, get, getAssociatedMarkupStream, getMarkupStream, hasAssociatedMarkup, internalAdd, isTransparentResolver, iterator, iterator, newMarkupResourceStream, onComponentTagBody, onRender, remove, remove, removeAll, renderAll, renderAssociatedMarkup, renderComponentTagBody, replace, setMarkupStream, setModel, size, toString, toString, visitChildren, visitChildren |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
public static java.lang.String VALUE_SEPARATOR
protected static final short FLAG_CONVERT_EMPTY_INPUT_STRING_TO_NULL
Constructor Detail |
---|
public FormComponent(java.lang.String id)
Component.Component(String)
public FormComponent(java.lang.String id, IModel model)
Component.Component(String, IModel)
Method Detail |
---|
public static final void visitFormComponentsPostOrder(Component component, FormComponent.IVisitor visitor)
component
- starting point of the traversalvisitor
- The visitor to callpublic final FormComponent add(IValidator validator)
validator
- The validator
java.lang.IllegalArgumentException
- if validator is nullIValidator
,
IValidatorAddListener
public boolean checkRequired()
isRequired()
to see if it has to check for requirement. If that is true then by
default it checks if the input is null or an empty String
Strings.isEmpty(CharSequence)
Subclasses that overwrite this method should also call isRequired()
first.
Strings.isEmpty(CharSequence)
,
isInputNullable()
public final void clearInput()
public void error(IValidationError error)
ValidationErrorFeedback
object that holds
both the validation error and the generated error message - so a custom feedback panel can
have access to both.
error
- validation errorpublic final java.lang.Object getConvertedInput()
convertInput()
.
public final void setConvertedInput(java.lang.Object convertedInput)
convertInput()
, in which case they should call this method to update the
input for this component instance.
convertedInput
- the converted inputpublic Form getForm()
public java.lang.String getInput()
public java.lang.String[] getInputAsArray()
public java.lang.String getInputName()
public final java.lang.String getRawInput()
public final java.lang.Class getType()
public java.lang.String getValidatorKeyPrefix()
Form.getValidatorKeyPrefix()
public final java.util.List getValidators()
public final java.lang.String getValue()
public final boolean hasRawInput()
public final void inputChanged()
public final void invalid()
public boolean isInputNullable()
disabled="disabled"
set.
public boolean isMultiPart()
public final boolean isPersistent()
public boolean isRequired()
public final boolean isValid()
public boolean processChildren()
IFormVisitorParticipant
processChildren
in interface IFormVisitorParticipant
IFormVisitorParticipant.processChildren()
public final void processInput()
public FormComponent setLabel(IModel labelModel)
labelModel
-
public void setModelValue(java.lang.String value)
VALUE_SEPARATOR
and calls setModelValue(String[]) with that.
value
- The valuepublic void setModelValue(java.lang.String[] value)
value
- The valuepublic final FormComponent setPersistent(boolean persistent)
persistent
- True if this component is to be persisted.
public final FormComponent setRequired(boolean required)
required
-
public final FormComponent setType(java.lang.Class type)
type
-
public void updateModel()
setModelObject(getConvertedInput());DO NOT CALL THIS METHOD DIRECTLY UNLESS YOU ARE SURE WHAT YOU ARE DOING. USUALLY UPDATING YOUR MODEL IS HANDLED BY THE FORM, NOT DIRECTLY BY YOU.
public final void valid()
public final void validate()
protected void convertInput()
getType()
and records any errors. Converted value is available through
getConvertedInput()
protected java.lang.Object convertValue(java.lang.String[] value) throws ConversionException
value
- The value can be the getInput() or through a cookie
ConversionException
- If input can't be convertedprotected java.util.List getBehaviors(java.lang.Class type)
Component
IBehavior
s that are of the provided type as
a unmodifiable list or null if there are no behaviors attached. Returns an empty list rather
than null if there are no behaviors coupled to this component.
getBehaviors
in class Component
type
- The type or null for all
Component.getBehaviors(java.lang.Class)
protected java.lang.String getModelValue()
protected final int inputAsInt()
protected final int inputAsInt(int defaultValue)
defaultValue
- Default value to return if request does not have an integer for this component
protected final int[] inputAsIntArray()
protected void internalOnModelChanged()
Component
internalOnModelChanged
in class Component
Component.internalOnModelChanged()
protected void onComponentTag(ComponentTag tag)
onComponentTag
in class Component
tag
- Tag to modifyComponent.onComponentTag(ComponentTag)
protected void onDetach()
onDetach
in class LabeledWebMarkupContainer
Component.onDetach()
protected void onDisabled(ComponentTag tag)
onComponentTag(ComponentTag)
when the component is disabled. By default,
this method will add a disabled="disabled" attribute to the tag. Components may override this
method to tweak the tag as they think is fit.
tag
- the tag that is being renderedprotected void onInvalid()
protected void onValid()
protected boolean shouldTrimInput()
true
protected final java.lang.String trim(java.lang.String string)
shouldTrimInput()
string
-
shouldTrimInput()
returns true, unchanged input otherwiseprotected boolean supportsPersistence()
protected final void validateRequired()
protected final void validateValidators()
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |