T
- The model object typepublic abstract class FormComponentPanel<T> extends FormComponent<T> implements IQueueRegion
It is recommended that you override FormComponent.convertInput()
and let it set the value that
represents the compound value of the nested components. Often, this goes hand-in-hand with
overriding Component.onBeforeRender()
, where you would analyze the model value, break it up and
distribute the appropriate values over the child components.
Here is a simple example of a panel with two components that multiplies and sets that as the master model object. Note that for this simple example, setting the model value wouldn't make sense, as the lhs and rhs cannot be known. For more complete examples of using this class, see the wicket-datetime project.
public class Multiply extends FormComponentPanel { private TextField left; private int lhs = 0; private int rhs = 0; private TextField right; public Multiply(String id) { super(id); init(); } public Multiply(String id, IModel model) { super(id, model); init(); } protected void convertInput() { Integer lhs = (Integer)left.getConvertedInput(); Integer rhs = (Integer)right.getConvertedInput(); setConvertedInput(lhs * rhs); } private void init() { add(left = new TextField("left", new PropertyModel(this, "lhs"), Integer.class)); add(right = new TextField("right", new PropertyModel(this, "rhs"), Integer.class)); left.setRequired(true); right.setRequired(true); } }With this markup:
<wicket:panel> <input type="text" wicket:id="left" size="2" /> * <input type="text" wicket:id="right" size="2" /> </wicket:panel>Which could be used, for example as:
add(new Multiply("multiply"), new PropertyModel(m, "multiply"))); add(new Label("multiplyLabel", new PropertyModel(m, "multiply")));and:
<span wicket:id="multiply">[multiply]</span> = <span wicket:id="multiplyLabel">[result]</span>
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 |
---|
FormComponentPanel(String id)
Construct.
|
FormComponentPanel(String id,
IModel<T> model)
Construct.
|
Modifier and Type | Method and Description |
---|---|
boolean |
checkRequired()
Checks if the form component's 'required' requirement is met by first checking
FormComponent.isRequired() to see if it has to check for requirement. |
protected IMarkupSourcingStrategy |
newMarkupSourcingStrategy()
If
Component.getMarkupSourcingStrategy() returns null, this method will be called. |
protected void |
onComponentTag(ComponentTag tag)
Processes the component tag.
|
add, add, clearInput, convertInput, convertValue, error, getConvertedInput, getDefaultLabel, getDefaultLabel, getForm, getInput, getInputAsArray, getInputName, getModel, getModelObject, getModelValue, getParameterValues, getRawInput, getType, getValidatorKeyPrefix, getValidators, getValue, hasRawInput, inputAsInt, inputAsInt, inputAsIntArray, inputChanged, internalOnModelChanged, invalid, isInputNullable, 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, onAfterRender, onBeforeRender, onConfigure, 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
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
dequeue, getRegionMarkup, newDequeueContext
public FormComponentPanel(String id)
id
- public boolean checkRequired()
FormComponent.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 FormComponent.isRequired()
first.
checkRequired
in class FormComponent<T>
Strings.isEmpty(CharSequence)
,
FormComponent.isInputNullable()
protected IMarkupSourcingStrategy newMarkupSourcingStrategy()
Component.getMarkupSourcingStrategy()
returns null, this method will be called. By default
it returns null, which means that a default markup strategy will be attached to the
component.
Please note that markup source strategies are not persisted. Instead they get re-created by calling this method again. That's ok since markup sourcing strategies usually do not maintain a state.
newMarkupSourcingStrategy
in class Component
protected void onComponentTag(ComponentTag tag)
onComponentTag
in class FormComponent<T>
tag
- Tag to modifyComponent.onComponentTag(ComponentTag)
Copyright © 2006–2020 Apache Software Foundation. All rights reserved.