org.apache.wicket.markup.html.form
Class Button

java.lang.Object
  extended by org.apache.wicket.Component
      extended by org.apache.wicket.MarkupContainer
          extended by org.apache.wicket.markup.html.WebMarkupContainer
              extended by org.apache.wicket.markup.html.form.LabeledWebMarkupContainer
                  extended by org.apache.wicket.markup.html.form.FormComponent<String>
                      extended by org.apache.wicket.markup.html.form.Button
All Implemented Interfaces:
Serializable, IClusterable, IConverterLocator, IFormModelUpdateListener, IFormSubmittingComponent, IFormVisitorParticipant, ILabelProvider<String>
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

Nested Class Summary
 
Nested classes/interfaces inherited from class org.apache.wicket.markup.html.form.FormComponent
FormComponent.AbstractVisitor, FormComponent.IVisitor
 
Nested classes/interfaces inherited from class org.apache.wicket.Component
Component.ComponentModelChange, Component.EnabledChange, Component.VisibilityChange
 
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_CONFIGURED, FLAG_INITIALIZED, FLAG_REMOVING_FROM_HIERARCHY, FLAG_RESERVED1, FLAG_RESERVED2, FLAG_RESERVED3, FLAG_RESERVED4, FLAG_RESERVED5, FLAG_RESERVED6, FLAG_RESERVED7, FLAG_RESERVED8, PARENT_PATH, PATH_SEPARATOR, RENDER
 
Constructor Summary
Button(String id)
          Constructor without a model.
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).
 
Method Summary
 boolean getDefaultFormProcessing()
          Gets the defaultFormProcessing property.
protected  String getOnClickScript()
          Gets any script that should rendered as the "onclick" attribute of the button.
protected  IModel<String> initModel()
          Override of the default initModel behaviour.
protected  void onComponentTag(ComponentTag tag)
          Processes the component tag.
 void onSubmit()
          Override this method to provide special submit handling in a multi-button form.
 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, getForm, getInput, getInputAsArray, getInputName, getModel, getModelObject, getModelValue, getRawInput, getType, getValidatorKeyPrefix, getValidators, getValue, hasRawInput, inputAsInt, inputAsInt, inputAsIntArray, inputChanged, internalOnModelChanged, invalid, isInputNullable, isMultiPart, isPersistent, isRequired, isValid, newValidatable, onDetach, onDisabled, onInvalid, onValid, processChildren, processInput, setConvertedInput, setLabel, setModel, setModelObject, setModelValue, setModelValue, setPersistent, setRequired, setType, shouldTrimInput, supportsPersistence, trim, valid, validate, validateRequired, validateValidators, visitComponentsPostOrder, visitFormComponentsPostOrder
 
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, getWebRequest
 
Methods inherited from class org.apache.wicket.MarkupContainer
add, addOrReplace, autoAdd, autoAdd, contains, findMarkupStream, get, get, getAssociatedMarkupStream, getMarkupStream, hasAssociatedMarkup, internalAdd, isTransparentResolver, iterator, iterator, newMarkupResourceStream, onAfterRenderChildren, onComponentTagBody, onRender, remove, remove, removeAll, renderAll, renderAssociatedMarkup, renderComponentTagBody, renderNext, replace, setDefaultModel, setMarkupStream, size, swap, toString, toString, visitChildren, visitChildren
 
Methods inherited from class org.apache.wicket.Component
add, addStateChange, afterRender, beforeRender, callOnBeforeRenderIfNotVisible, checkComponentTag, checkComponentTagAttribute, checkHierarchyChange, configure, continueToOriginalDestination, debug, detach, detachBehaviors, detachModel, detachModels, determineVisibility, error, exceptionMessage, fatal, findPage, findParent, findParentWithAssociatedMarkup, getAjaxRegionMarkupId, getApplication, getBehaviors, getBehaviors, getBehaviorsRawList, getClassRelativePath, getComponentBorder, getConverter, getConverter, getDefaultModel, getDefaultModelObject, getDefaultModelObjectAsString, getDefaultModelObjectAsString, getEscapeModelStrings, getFeedbackMessage, getFlag, getFlag, getId, getInnermostModel, getInnermostModel, getLocale, getLocalizer, getMarkupAttributes, getMarkupId, getMarkupId, getMarkupIdImpl, getMetaData, getModelComparator, getOutputMarkupId, getOutputMarkupPlaceholderTag, getPage, getPageRelativePath, getParent, getPath, getRenderBodyOnly, getRequest, getRequestCycle, getResponse, getSession, getSizeInBytes, getStatelessHint, getString, getString, getString, getStyle, getVariation, hasBeenRendered, hasErrorMessage, hasFeedbackMessage, info, internalAttach, internalDetach, internalOnAttach, internalOnDetach, isActionAuthorized, isAncestorOf, isAttached, isBehaviorAccepted, isEnableAllowed, isEnabled, isEnabledInHierarchy, isIgnoreAttributeModifier, isRenderAllowed, isStateless, isVersioned, isVisibilityAllowed, isVisible, isVisibleInHierarchy, locateMarkupStream, markAttached, markRendering, modelChanged, modelChanging, onAfterRender, onAttach, onBeforeRender, onBeginRequest, onConfigure, onEndRequest, onInitialize, onModelChanged, onModelChanging, onRemove, prepareForRender, prepareForRender, redirectToInterceptPage, remove, remove, render, render, renderComponent, renderComponent, renderComponentTag, rendered, renderHead, renderPlaceholderTag, replaceComponentTagBody, replaceWith, sameInnermostModel, sameInnermostModel, setAuto, setComponentBorder, setDefaultModelObject, setEnabled, setEscapeModelStrings, setFlag, setFlag, setIgnoreAttributeModifier, setMarkupId, setMarkupIdImpl, setMetaData, setOutputMarkupId, setOutputMarkupPlaceholderTag, setRedirect, setRenderBodyOnly, setResponsePage, setResponsePage, setResponsePage, setVersioned, setVisibilityAllowed, setVisible, urlFor, urlFor, urlFor, urlFor, urlFor, urlFor, 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
getForm, getInputName
 

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.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 a StringResourceModel for a localized value.

Parameters:
id - Component id
model - 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 class Component
Returns:
The model
See Also:
Component.initModel()

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 interface IFormSubmittingComponent
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.

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 interface IFormModelUpdateListener
Overrides:
updateModel in class FormComponent<String>
See Also:
FormComponent.updateModel()

getOnClickScript

protected String getOnClickScript()
Gets any script that should rendered as the "onclick" attribute of 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. An onclick attribute is added if the subclass specified javascript.

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 class FormComponent<String>
Parameters:
tag - Tag to modify
See Also:
Component.onComponentTag(ComponentTag)

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.

Specified by:
onSubmit in interface IFormSubmittingComponent


Copyright © 2004-2011 Apache Software Foundation. All Rights Reserved.