Class Button
-
- All Implemented Interfaces:
Serializable
,Iterable<Component>
,IEventSink
,IEventSource
,IFeedbackContributor
,IConverterLocator
,IGenericComponent<String,FormComponent<String>>
,IMetadataContext<Serializable,Component>
,IFormModelUpdateListener
,IFormSubmitter
,IFormSubmittingComponent
,IFormVisitorParticipant
,ILabelProvider<String>
,IHeaderContributor
,IRequestableComponent
,IHierarchical<Component>
,IClusterable
- Direct Known Subclasses:
AjaxButton
,AjaxFallbackButton
,ImageButton
,WizardButton
public class Button extends FormComponent<String> implements IFormSubmittingComponent
A form button.Within a form, you can nest Button components. Note that you don't have to do this to let the form work (a simple <input type="submit".. suffices), but if you want to have different kinds of submit behavior it might be a good idea to use Buttons.
The model property is used to set the "value" attribute. It will thus be the label of the button that shows up for end users. If you want the attribute to keep it's markup attribute value, don't provide a model, or let it return an empty string.
When you add a Wicket Button to a form, and that button is clicked, by default the button's onSubmit method is called first, and after that the form's onSubmit method is called. If you want to change this (e.g. you don't want to call the form's onSubmit method, or you want it called before the button's onSubmit method), you can override Form.delegateSubmit.
One other option you should know of is the 'defaultFormProcessing' property of Button components. When you set this to false (default is true), all validation and formupdating is bypassed and the onSubmit method of that button is called directly, and the onSubmit method of the parent form is not called. A common use for this is to create a cancel button.
- Author:
- Jonathan Locke, Eelco Hillenius
- See Also:
- Serialized Form
-
-
Field Summary
-
Fields inherited from class org.apache.wicket.markup.html.form.FormComponent
FLAG_CONVERT_EMPTY_INPUT_STRING_TO_NULL, VALUE_SEPARATOR
-
Fields inherited from class org.apache.wicket.Component
ENABLE, FLAG_INITIALIZED, FLAG_RESERVED1, FLAG_RESERVED2, FLAG_RESERVED3, FLAG_RESERVED4, FLAG_RESERVED5, FLAG_RESERVED8, PARENT_PATH, PATH_SEPARATOR, RENDER, RFLAG_CONTAINER_DEQUEING, RFLAG_CONTAINER_HAS_REMOVALS
-
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
getDefaultFormProcessing()
Gets the defaultFormProcessing property.Form<?>
getForm()
Override to not throw exception if there is no parent form.protected String
getOnClickScript()
Gets any script that should rendered as a "click" event handler for the button.protected IModel<String>
initModel()
Override of the default initModel behaviour.void
onAfterSubmit()
Override this method to provide special submit handling in a multi-button form.protected void
onComponentTag(ComponentTag tag)
Processes the component tag.void
onComponentTagBody(MarkupStream markupStream, ComponentTag openTag)
Handle the container's body.void
onError()
Method that is invoked when form processing fails; for example, when there are validation errors.void
onSubmit()
Override this method to provide special submit handling in a multi-button form.void
renderHead(IHeaderResponse response)
Adds a click event handler if the subclass specified javascript.Button
setDefaultFormProcessing(boolean defaultFormProcessing)
Sets the defaultFormProcessing property.void
updateModel()
This method does nothing, as any model of a button is only used to display the button's label (by setting it's markup attribute "value").-
Methods inherited from class org.apache.wicket.markup.html.form.FormComponent
add, add, checkRequired, clearInput, convertInput, convertValue, error, getConvertedInput, getDefaultLabel, getDefaultLabel, getInput, getInputAsArray, getInputName, getModelValue, getParameterValues, getRawInput, getType, getValidatorKeyPrefix, getValidators, getValue, hasRawInput, inputAsInt, inputAsInt, inputAsIntArray, inputChanged, internalOnModelChanged, invalid, isInputNullable, isMultiPart, isRequired, isValid, newValidatable, newValidationError, onBeforeRender, onDetach, onDisabled, onInvalid, onValid, processChildren, processInput, remove, reportRequiredError, setConvertedInput, setLabel, setModelValue, setRequired, setType, shouldTrimInput, trim, updateAutoLabels, updateAutoLabels, updateCollectionModel, valid, validate, validateRequired, validateValidators, visitComponentsPostOrder, visitFormComponentsPostOrder
-
Methods inherited from class org.apache.wicket.markup.html.form.LabeledWebMarkupContainer
getLabel
-
Methods inherited from class org.apache.wicket.markup.html.WebMarkupContainer
getWebApplication, getWebPage, getWebRequest, getWebResponse, getWebSession
-
Methods inherited from class org.apache.wicket.MarkupContainer
add, addDequeuedComponent, addOrReplace, autoAdd, canDequeueTag, contains, dequeue, dequeue, dequeuePreamble, findChildComponent, findComponentToDequeue, get, getAssociatedMarkup, getAssociatedMarkupStream, getMarkup, getMarkupType, getRegionMarkup, internalAdd, internalInitialize, iterator, iterator, newDequeueContext, onInitialize, onRender, queue, remove, remove, removeAll, renderAll, renderAssociatedMarkup, renderAssociatedMarkup, renderNext, replace, setDefaultModel, size, stream, streamChildren, toString, toString, visitChildren, visitChildren
-
Methods inherited from class org.apache.wicket.Component
add, addStateChange, beforeRender, canCallListener, canCallListenerAfterExpiry, 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, getMarkupTag, 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, internalRenderComponent, internalRenderHead, isActionAuthorized, isAuto, isBehaviorAccepted, isEnableAllowed, isEnabled, isEnabledInHierarchy, isIgnoreAttributeModifier, isInitialized, isRenderAllowed, isRendering, isStateless, isVersioned, isVisibilityAllowed, isVisible, isVisibleInHierarchy, markRendering, modelChanged, modelChanging, newMarkupSourcingStrategy, onAfterRender, onConfigure, onEvent, onModelChanged, onModelChanging, onReAdd, onRemove, redirectToInterceptPage, remove, remove, render, renderComponentTag, rendered, renderPart, renderPlaceholderTag, replaceComponentTagBody, replaceWith, sameInnermostModel, sameInnermostModel, send, setAuto, setDefaultModelObject, setEnabled, setEscapeModelStrings, setFlag, setIgnoreAttributeModifier, setMarkup, setMarkupId, setMarkupIdImpl, setMetaData, setOutputMarkupId, setOutputMarkupPlaceholderTag, setParent, setRenderBodyOnly, setResponsePage, setResponsePage, setResponsePage, setVersioned, setVisibilityAllowed, setVisible, success, urlFor, urlFor, urlFor, urlForListener, urlForListener, visitParents, visitParents, warn, wrap
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.apache.wicket.markup.html.form.IFormSubmittingComponent
getInputName
-
Methods inherited from interface org.apache.wicket.IGenericComponent
getDefaultModel, getDefaultModelObject, getModel, getModelObject, setDefaultModel, setDefaultModelObject, setModel, setModelObject
-
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
-
-
-
Constructor Detail
-
Button
public Button(String id)
Constructor without a model. Buttons without models leave the markup attribute "value". Provide a model if you want to set the button's label dynamically.- See Also:
Component(String)
-
Button
public Button(String id, IModel<String> model)
Constructor taking an model for rendering the 'label' of the button (the value attribute of the input/button tag). Use aStringResourceModel
for a localized value.- Parameters:
id
- Component idmodel
- The model property is used to set the "value" attribute. It will thus be the label of the button that shows up for end users. If you want the attribute to keep it's markup attribute value, don't provide a model, or let it return an empty string.
-
-
Method Detail
-
initModel
protected IModel<String> initModel()
Override of the default initModel behaviour. This component will not use any compound model a parent, but only a model that is explicitly set.- Overrides:
initModel
in classComponent
- Returns:
- The model
- See Also:
Component.initModel()
-
getForm
public Form<?> getForm()
Override to not throw exception if there is no parent form.- Specified by:
getForm
in interfaceIFormSubmitter
- Overrides:
getForm
in classFormComponent<String>
- Returns:
- the parent form or
null
-
getDefaultFormProcessing
public final boolean getDefaultFormProcessing()
Gets the defaultFormProcessing property. When false (default is true), all validation and formupdating is bypassed and the onSubmit method of that button is called directly, and the onSubmit method of the parent form is not called. A common use for this is to create a cancel button.- Specified by:
getDefaultFormProcessing
in interfaceIFormSubmitter
- Returns:
- defaultFormProcessing
-
setDefaultFormProcessing
public final Button setDefaultFormProcessing(boolean defaultFormProcessing)
Sets the defaultFormProcessing property. When false (default is true), all validation and form updating is bypassed and the onSubmit method of that button is called directly, and the onSubmit method of the parent form is not called. A common use for this is to create a cancel button.- Specified by:
setDefaultFormProcessing
in interfaceIFormSubmittingComponent
- Parameters:
defaultFormProcessing
- defaultFormProcessing- Returns:
- This
-
updateModel
public void updateModel()
This method does nothing, as any model of a button is only used to display the button's label (by setting it's markup attribute "value").- Specified by:
updateModel
in interfaceIFormModelUpdateListener
- Overrides:
updateModel
in classFormComponent<String>
- See Also:
FormComponent.updateModel()
-
getOnClickScript
protected String getOnClickScript()
Gets any script that should rendered as a "click" event handler for the button. Returns null by default, override this method to provide any script.- Returns:
- Any onClick JavaScript that should be used, returns null by default
-
onComponentTag
protected void onComponentTag(ComponentTag tag)
Processes the component tag. A value attribute is added with the value of the model object, if available.NOTE. For a <button> the value attribute is not rendered, markup needs to be added within the button to display the button's label.
- Overrides:
onComponentTag
in classFormComponent<String>
- Parameters:
tag
- Tag to modify- See Also:
Component.onComponentTag(ComponentTag)
-
renderHead
public void renderHead(IHeaderResponse response)
Adds a click event handler if the subclass specified javascript.- Specified by:
renderHead
in interfaceIHeaderContributor
- Overrides:
renderHead
in classComponent
- Parameters:
response
- Response object
-
onComponentTagBody
public void onComponentTagBody(MarkupStream markupStream, ComponentTag openTag)
Description copied from class:MarkupContainer
Handle the container's body. If your override of this method does not advance the markup stream to the close tag for the openTag, a runtime exception will be thrown by the framework.- Overrides:
onComponentTagBody
in classMarkupContainer
- Parameters:
markupStream
- The markup streamopenTag
- The open tag for the body
-
onError
public void onError()
Description copied from interface:IFormSubmitter
Method that is invoked when form processing fails; for example, when there are validation errors.- Specified by:
onError
in interfaceIFormSubmitter
-
onSubmit
public void onSubmit()
Override this method to provide special submit handling in a multi-button form. It is called whenever the user clicks this particular button, except if validation fails. This method will be called beforeForm.onSubmit()
.- Specified by:
onSubmit
in interfaceIFormSubmitter
-
onAfterSubmit
public void onAfterSubmit()
Override this method to provide special submit handling in a multi-button form. It is called whenever the user clicks this particular button, except if validation fails. This method will be called afterForm.onSubmit()
.- Specified by:
onAfterSubmit
in interfaceIFormSubmitter
-
-