Class UIForm
- java.lang.Object
-
- jakarta.faces.component.UIComponent
-
- jakarta.faces.component.UIComponentBase
-
- jakarta.faces.component.UIForm
-
- All Implemented Interfaces:
NamingContainer,PartialStateHolder,StateHolder,TransientStateHolder,UniqueIdVendor,ComponentSystemEventListener,FacesListener,SystemEventListenerHolder,EventListener
- Direct Known Subclasses:
HtmlForm
public class UIForm extends UIComponentBase implements NamingContainer, UniqueIdVendor
UIForm is a
UIComponentthat represents an input form to be presented to the user, and whose child components represent (among other things) the input fields to be included when the form is submitted.By default, the
rendererTypeproperty must be set to "jakarta.faces.Form". This value can be changed by calling thesetRendererType()method.
-
-
Field Summary
Fields Modifier and Type Field Description static StringCOMPONENT_FAMILYThe standard component family for this component.static StringCOMPONENT_TYPEThe standard component type for this component.-
Fields inherited from class jakarta.faces.component.UIComponent
ATTRS_WITH_DECLARED_DEFAULT_VALUES, BEANINFO_KEY, bindings, COMPOSITE_COMPONENT_TYPE_KEY, COMPOSITE_FACET_NAME, FACETS_KEY, VIEW_LOCATION_KEY
-
Fields inherited from interface jakarta.faces.component.NamingContainer
SEPARATOR_CHAR
-
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description StringcreateUniqueId(FacesContext context, String seed)Generate an identifier for a component.StringgetContainerClientId(FacesContext context)Override theUIComponent.getContainerClientId(jakarta.faces.context.FacesContext)to allow users to disable this form from prepending itsclientIdto its descendent'sclientIdsdepending on the value of this form'sisPrependId()property.StringgetFamily()Return the identifier of the component family to which this component belongs.booleaninvokeOnComponent(FacesContext context, String clientId, ContextCallback callback)Starting at this component in the View hierarchy, search for a component with aclientIdequal to the argumentclientIdand, if found, call theContextCallback.invokeContextCallback(jakarta.faces.context.FacesContext, jakarta.faces.component.UIComponent)method on the argumentcallback, passing the currentFacesContextand the found component as arguments.booleanisPrependId()Is the id prepended.booleanisSubmitted()Returns the current value of thesubmittedproperty.voidprocessDecodes(FacesContext context)OverrideUIComponent.processDecodes(jakarta.faces.context.FacesContext)to ensure that the form is decoded before its children.voidprocessUpdates(FacesContext context)OverrideUIComponent.processUpdates(jakarta.faces.context.FacesContext)to ensure that the children of thisUIForminstance are only processed ifisSubmitted()returnstrue.voidprocessValidators(FacesContext context)OverrideUIComponent.processValidators(jakarta.faces.context.FacesContext)to ensure that the children of thisUIForminstance are only processed ifisSubmitted()returnstrue.voidsetPrependId(boolean prependId)Set whether the id should be prepended.voidsetSubmitted(boolean submitted)If thisUIForminstance (as opposed to other forms in the page) is experiencing a submit during this request processing lifecycle, this method must be called, withtrueas the argument, during theUIComponent.decode(jakarta.faces.context.FacesContext)for thisUIForminstance.booleanvisitTree(VisitContext context, VisitCallback callback)Perform a tree visit starting at this node in the tree.-
Methods inherited from class jakarta.faces.component.UIComponentBase
addClientBehavior, addFacesListener, broadcast, clearInitialState, decode, encodeBegin, encodeChildren, encodeEnd, findComponent, getAttributes, getChildCount, getChildren, getClientBehaviors, getClientId, getDefaultEventName, getEventNames, getFacesContext, getFacesListeners, getFacet, getFacetCount, getFacets, getFacetsAndChildren, getId, getListenersForEventClass, getParent, getPassThroughAttributes, getRenderer, getRendererType, getRendersChildren, isRendered, isTransient, markInitialState, processRestoreState, processSaveState, queueEvent, removeFacesListener, restoreAttachedState, restoreState, saveAttachedState, saveState, setId, setParent, setRendered, setRendererType, setTransient, subscribeToEvent, unsubscribeFromEvent
-
Methods inherited from class jakarta.faces.component.UIComponent
encodeAll, getClientId, getCompositeComponentParent, getCurrentComponent, getCurrentCompositeComponent, getNamingContainer, getPassThroughAttributes, getResourceBundleMap, getStateHelper, getStateHelper, getTransientStateHelper, getTransientStateHelper, getValueExpression, initialStateMarked, isCompositeComponent, isInView, isVisitable, popComponentFromEL, processEvent, pushComponentToEL, restoreTransientState, saveTransientState, setInView, setValueExpression
-
-
-
-
Field Detail
-
COMPONENT_TYPE
public static final String COMPONENT_TYPE
The standard component type for this component.
- See Also:
- Constant Field Values
-
COMPONENT_FAMILY
public static final String COMPONENT_FAMILY
The standard component family for this component.
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
UIForm
public UIForm()
Create a new
UIForminstance with default property values.
-
-
Method Detail
-
getFamily
public String getFamily()
Description copied from class:UIComponentReturn the identifier of the component family to which this component belongs. This identifier, in conjunction with the value of the
rendererTypeproperty, may be used to select the appropriateRendererfor this component instance. Note this method should NOT returnnull- Specified by:
getFamilyin classUIComponent- Returns:
- the component family (not null).
-
isSubmitted
public boolean isSubmitted()
Returns the current value of the
submittedproperty. The default value isfalse. SeesetSubmitted(boolean)for details.This property must be kept as a transient property using the
UIComponent.getTransientStateHelper().- Returns:
trueif the form was submitted,falseotherwise.
-
setSubmitted
public void setSubmitted(boolean submitted)
If this
UIForminstance (as opposed to other forms in the page) is experiencing a submit during this request processing lifecycle, this method must be called, withtrueas the argument, during theUIComponent.decode(jakarta.faces.context.FacesContext)for thisUIForminstance. If thisUIForminstance is not experiencing a submit, this method must be called, withfalseas the argument, during theUIComponent.decode(jakarta.faces.context.FacesContext)for thisUIForminstance.The value of a
UIForm's submitted property must not be saved as part of its state.This property must be kept as a transient property using the
UIComponent.getTransientStateHelper().- Parameters:
submitted- the new value of the submitted flag.
-
isPrependId
public boolean isPrependId()
Is the id prepended.- Returns:
trueif it is,falseotherwise.
-
setPrependId
public void setPrependId(boolean prependId)
Set whether the id should be prepended.- Parameters:
prependId-trueif it is,falseotherwise.
-
processDecodes
public void processDecodes(FacesContext context)
Override
UIComponent.processDecodes(jakarta.faces.context.FacesContext)to ensure that the form is decoded before its children. This is necessary to allow thesubmittedproperty to be correctly set.- Overrides:
processDecodesin classUIComponentBase- Parameters:
context-FacesContextfor the request we are processing- Throws:
NullPointerException- ifcontextisnull
-
processValidators
public void processValidators(FacesContext context)
Override
UIComponent.processValidators(jakarta.faces.context.FacesContext)to ensure that the children of thisUIForminstance are only processed ifisSubmitted()returnstrue.- Overrides:
processValidatorsin classUIComponentBase- Parameters:
context-FacesContextfor the request we are processing- Throws:
NullPointerException- ifcontextisnull- See Also:
PreValidateEvent,PostValidateEvent
-
processUpdates
public void processUpdates(FacesContext context)
Override
UIComponent.processUpdates(jakarta.faces.context.FacesContext)to ensure that the children of thisUIForminstance are only processed ifisSubmitted()returnstrue.- Overrides:
processUpdatesin classUIComponentBase- Parameters:
context-FacesContextfor the request we are processing- Throws:
NullPointerException- ifcontextisnull
-
createUniqueId
public String createUniqueId(FacesContext context, String seed)
Generate an identifier for a component. The identifier will be prefixed with UNIQUE_ID_PREFIX, and will be unique within this component-container. Optionally, a unique seed value can be supplied by component creators which should be included in the generated unique id.
If the
prependIdproperty has the valuefalse, this method must callcreateUniqueIdon the next ancestorUniqueIdVendor.- Specified by:
createUniqueIdin interfaceUniqueIdVendor- Parameters:
context- FacesContextseed- an optional seed value - e.g. based on the position of the component in the VDL-template- Returns:
- a unique-id in this component-container
-
getContainerClientId
public String getContainerClientId(FacesContext context)
Override the
UIComponent.getContainerClientId(jakarta.faces.context.FacesContext)to allow users to disable this form from prepending itsclientIdto its descendent'sclientIdsdepending on the value of this form'sisPrependId()property.- Overrides:
getContainerClientIdin classUIComponent- Parameters:
context- the Faces context.- Returns:
- the container client id.
-
visitTree
public boolean visitTree(VisitContext context, VisitCallback callback)
Description copied from class:UIComponentPerform a tree visit starting at this node in the tree.
UIComponent.visitTree() implementations do not invoke the
VisitCallbackdirectly, but instead callVisitContext.invokeVisitCallback(jakarta.faces.component.UIComponent, jakarta.faces.component.visit.VisitCallback)to invoke the callback. This allowsVisitContextimplementations to provide optimized tree traversals, for example by only calling theVisitCallbackfor a subset of components.UIComponent.visitTree() implementations must call UIComponent.pushComponentToEL() before performing the visit and UIComponent.popComponentFromEL() after the visit.
- Overrides:
visitTreein classUIComponent- Parameters:
context- theVisitContextfor this visitcallback- theVisitCallbackinstance whosevisitmethod will be called for each node visited.- Returns:
- component implementations may return
trueto indicate that the tree visit is complete (eg. all components that need to be visited have been visited). This results in the tree visit being short-circuited such that no more components are visited. - See Also:
UIComponent.visitTree(jakarta.faces.component.visit.VisitContext, jakarta.faces.component.visit.VisitCallback)
-
invokeOnComponent
public boolean invokeOnComponent(FacesContext context, String clientId, ContextCallback callback) throws FacesException
Description copied from class:UIComponentBaseStarting at this component in the View hierarchy, search for a component with a
clientIdequal to the argumentclientIdand, if found, call theContextCallback.invokeContextCallback(jakarta.faces.context.FacesContext, jakarta.faces.component.UIComponent)method on the argumentcallback, passing the currentFacesContextand the found component as arguments. This method is similar toUIComponent.findComponent(java.lang.String)but it does not support the leadingUINamingContainer.getSeparatorChar(jakarta.faces.context.FacesContext)syntax for searching from the root of the View.The default implementation will first check if
this.getClientId()is equal to the argumentclientId. If so, first callUIComponent.pushComponentToEL(jakarta.faces.context.FacesContext, jakarta.faces.component.UIComponent), then call theContextCallback.invokeContextCallback(jakarta.faces.context.FacesContext, jakarta.faces.component.UIComponent)method on the argument callback, passing through theFacesContextargument and passing this as the component argument. Then callUIComponent.popComponentFromEL(jakarta.faces.context.FacesContext). If anExceptionis thrown by the callback, wrap it in aFacesExceptionand re-throw it. Otherwise, returntrue.Otherwise, for each component returned by
UIComponent.getFacetsAndChildren(), callinvokeOnComponent()passing the arguments to this method, in order. The first timeinvokeOnComponent()returns true, abort traversing the rest of theIteratorand returntrue.When calling
ContextCallback.invokeContextCallback(jakarta.faces.context.FacesContext, jakarta.faces.component.UIComponent)the implementation of this method must guarantee that the state of the component passed to the callback correctly reflects the component's position in the View hierarchy with respect to any state found in the argumentclientId. For example, an iterating component such asUIDatawill need to set its row index to correctly reflect the argumentclientIdbefore finding the appropriate child component backed by the correct row. When the callback returns, either normally or by throwing anExceptionthe implementation of this method must restore the state of the view to the way it was before invoking the callback.If none of the elements from
UIComponent.getFacetsAndChildren()returnedtruefrominvokeOnComponent(), returnfalse.Simple usage example to find a component by
clientId.private UIComponent found = null; private void doFind(FacesContext context, String clientId) { context.getViewRoot().invokeOnComponent(context, clientId, new ContextCallback() { public void invokeContextCallback(FacesContext context, UIComponent component) { found = component; } }); }- Overrides:
invokeOnComponentin classUIComponentBase- Parameters:
context- theFacesContextfor the current requestclientId- the client identifier of the component to be passed to the argument callback.callback- an implementation of the Callback interface.- Returns:
trueif the a component with the givenclientIdis found, the callback method was successfully invoked passing that component as an argument, and no Exception was thrown. Returnsfalseif no component with the givenclientIdis found.- Throws:
FacesException- if the argument Callback throws an Exception, it is wrapped in aFacesExceptionand re-thrown.- See Also:
UIComponent.invokeOnComponent(jakarta.faces.context.FacesContext, java.lang.String, jakarta.faces.component.ContextCallback)
-
-