Class UIViewParameter
- java.lang.Object
-
- jakarta.faces.component.UIComponent
-
- jakarta.faces.component.UIComponentBase
-
- jakarta.faces.component.UIOutput
-
- jakarta.faces.component.UIInput
-
- jakarta.faces.component.UIViewParameter
-
- All Implemented Interfaces:
EditableValueHolder
,PartialStateHolder
,StateHolder
,TransientStateHolder
,ValueHolder
,ComponentSystemEventListener
,FacesListener
,SystemEventListenerHolder
,EventListener
public class UIViewParameter extends UIInput
UIViewParameter represents a binding between a request parameter and a model property or
UIViewRoot
property. This is a bi-directional binding.The
ViewDeclarationLanguage
implementation must cause an instance of this component to appear in the view for each occurrence of an<f:viewParam />
element placed inside of an<f:metadata />
element. The user must place this facet within theUIViewRoot
.Because this class extends
UIInput
any actions that one would normally take on aUIInput
instance are valid for instances of this class. Instances of this class participate in the regular Jakarta Server Faces lifecycle, including on Ajax requests.- Since:
- 2.0
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
UIViewParameter.Reference
Inner class to encapsulate aUIViewParameter
instance so that it may be safely referenced regardless of whether or not the current view is the same as the view in which thisUIViewParameter
resides.
-
Field Summary
Fields Modifier and Type Field Description static String
COMPONENT_FAMILY
The standard component family for this component.static String
COMPONENT_TYPE
The standard component type for this component.-
Fields inherited from class jakarta.faces.component.UIInput
ALWAYS_PERFORM_VALIDATION_WHEN_REQUIRED_IS_TRUE, CONVERSION_MESSAGE_ID, EMPTY_STRING_AS_NULL_PARAM_NAME, REQUIRED_MESSAGE_ID, UPDATE_MESSAGE_ID, VALIDATE_EMPTY_FIELDS_PARAM_NAME
-
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
-
-
Constructor Summary
Constructors Constructor Description UIViewParameter()
Create a newUIViewParameter
instance with default property values.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
decode(FacesContext context)
Override behavior from superclass to pull a value from the incoming request parameter map under the name given bygetName()
and store it with a call toUIInput.setSubmittedValue(java.lang.Object)
.void
encodeAll(FacesContext context)
Called specially byUIViewRoot.encodeEnd(jakarta.faces.context.FacesContext)
, this method simply sets the submitted value to be the return fromgetStringValue(jakarta.faces.context.FacesContext)
.protected Object
getConvertedValue(FacesContext context, Object submittedValue)
Because this class has noRenderer
, leverage the one from the standard HTML_BASICRenderKit
withcomponent-family: jakarta.faces.Input
andrenderer-type: jakarta.faces.Text
and call itsRenderer.getConvertedValue(jakarta.faces.context.FacesContext, jakarta.faces.component.UIComponent, java.lang.Object)
method.String
getFamily()
Return the identifier of the component family to which this component belongs.String
getName()
Return the request parameter name from which the value is retrieved.String
getStringValue(FacesContext context)
If the value of this parameter comes from aValueExpression
return the value of the expression, otherwise, return the local value.String
getStringValueFromModel(FacesContext context)
Manually perform standard conversion steps to get a string value from the value expression.Object
getSubmittedValue()
Assume that the submitted value is always a string, but the return type from this method isObject
..boolean
isImmediate()
Returnfalse
.void
processValidators(FacesContext context)
Specialize superclass behavior to treatnull
differently.void
setName(String name)
Set the request parameter name from which the value is retrieved.void
setSubmittedValue(Object submittedValue)
PENDING (docs) Interesting that submitted value isn't saved by the parentvoid
updateModel(FacesContext context)
Call through to superclassUIInput.updateModel(jakarta.faces.context.FacesContext)
then take the additional action of pushing the value into request scope if and only if the value is not a value expression, is valid, and the local value was set on this lifecycle execution.-
Methods inherited from class jakarta.faces.component.UIInput
addValidator, addValueChangeListener, clearInitialState, compareValues, getConverterMessage, getRequiredMessage, getValidatorMessage, getValidators, getValue, getValueChangeListeners, isEmpty, isLocalValueSet, isRequired, isValid, markInitialState, processDecodes, processUpdates, removeValidator, removeValueChangeListener, resetValue, restoreState, saveState, setConverterMessage, setImmediate, setLocalValueSet, setRequired, setRequiredMessage, setValid, setValidatorMessage, setValue, validate, validateValue
-
Methods inherited from class jakarta.faces.component.UIOutput
getConverter, getLocalValue, setConverter
-
Methods inherited from class jakarta.faces.component.UIComponentBase
addClientBehavior, addFacesListener, broadcast, encodeBegin, encodeChildren, encodeEnd, findComponent, getAttributes, getChildCount, getChildren, getClientBehaviors, getClientId, getDefaultEventName, getEventNames, getFacesContext, getFacesListeners, getFacet, getFacetCount, getFacets, getFacetsAndChildren, getId, getListenersForEventClass, getParent, getPassThroughAttributes, getRenderer, getRendererType, getRendersChildren, invokeOnComponent, isRendered, isTransient, processRestoreState, processSaveState, queueEvent, removeFacesListener, restoreAttachedState, saveAttachedState, setId, setParent, setRendered, setRendererType, setTransient, subscribeToEvent, unsubscribeFromEvent
-
Methods inherited from class jakarta.faces.component.UIComponent
getClientId, getCompositeComponentParent, getContainerClientId, getCurrentComponent, getCurrentCompositeComponent, getNamingContainer, getPassThroughAttributes, getResourceBundleMap, getStateHelper, getStateHelper, getTransientStateHelper, getTransientStateHelper, getValueExpression, initialStateMarked, isCompositeComponent, isInView, isVisitable, popComponentFromEL, processEvent, pushComponentToEL, restoreTransientState, saveTransientState, setInView, setValueExpression, visitTree
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface jakarta.faces.component.ValueHolder
getConverter, getLocalValue, setConverter
-
-
-
-
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
-
UIViewParameter
public UIViewParameter()
Create a new
UIViewParameter
instance with default property values.
-
-
Method Detail
-
getFamily
public String getFamily()
Description copied from class:UIComponent
Return the identifier of the component family to which this component belongs. This identifier, in conjunction with the value of the
rendererType
property, may be used to select the appropriateRenderer
for this component instance. Note this method should NOT returnnull
-
getName
public String getName()
Return the request parameter name from which the value is retrieved.
- Returns:
- the name.
- Since:
- 2.0
-
setName
public void setName(String name)
Set the request parameter name from which the value is retrieved.
- Parameters:
name
- The new request parameter name.- Since:
- 2.0
-
isImmediate
public boolean isImmediate()
Return
false
. The immediate setting is not relevant for view parameters and must be assumed to befalse
.- Specified by:
isImmediate
in interfaceEditableValueHolder
- Overrides:
isImmediate
in classUIInput
- Returns:
true
if immediate,false
otherwise.- Since:
- 2.0
-
getSubmittedValue
public Object getSubmittedValue()
Assume that the submitted value is always a string, but the return type from this method is
Object
..- Specified by:
getSubmittedValue
in interfaceEditableValueHolder
- Overrides:
getSubmittedValue
in classUIInput
- Returns:
- the submitted value.
- Since:
- 2.0
-
setSubmittedValue
public void setSubmittedValue(Object submittedValue)
PENDING (docs) Interesting that submitted value isn't saved by the parent- Specified by:
setSubmittedValue
in interfaceEditableValueHolder
- Overrides:
setSubmittedValue
in classUIInput
- Parameters:
submittedValue
- The new submitted value
-
decode
public void decode(FacesContext context)
Override behavior from superclass to pull a value from the incoming request parameter map under the name given by
getName()
and store it with a call toUIInput.setSubmittedValue(java.lang.Object)
.- Overrides:
decode
in classUIInput
- Parameters:
context
-FacesContext
for the request we are processing- Since:
- 2.0
-
processValidators
public void processValidators(FacesContext context)
Specialize superclass behavior to treat
null
differently. In this class, anull
value along with the "required" flag being set totrue
will cause a validation failure. Otherwise, If theUIInput.EMPTY_STRING_AS_NULL_PARAM_NAME
context parameter is true and the value isnull
, callUIInput.setSubmittedValue(java.lang.Object)
passing the empty string as the argument. This will cause the normal validation processing to happen, including bean validation.- Overrides:
processValidators
in classUIInput
- Parameters:
context
- the Faces context.- Since:
- 2.0
- See Also:
PreValidateEvent
,PostValidateEvent
-
updateModel
public void updateModel(FacesContext context)
Call through to superclass
UIInput.updateModel(jakarta.faces.context.FacesContext)
then take the additional action of pushing the value into request scope if and only if the value is not a value expression, is valid, and the local value was set on this lifecycle execution.- Overrides:
updateModel
in classUIInput
- Parameters:
context
-FacesContext
for the request we are processing- Since:
- 2.0
-
encodeAll
public void encodeAll(FacesContext context) throws IOException
Called specially by
UIViewRoot.encodeEnd(jakarta.faces.context.FacesContext)
, this method simply sets the submitted value to be the return fromgetStringValue(jakarta.faces.context.FacesContext)
.- Overrides:
encodeAll
in classUIComponent
- Parameters:
context
- the Faces context.- Throws:
IOException
- when an I/O error occurs.- Since:
- 2.0
-
getStringValue
public String getStringValue(FacesContext context)
If the value of this parameter comes from a
ValueExpression
return the value of the expression, otherwise, return the local value.- Parameters:
context
- the Faces context.- Returns:
- the string value.
- Since:
- 2.0
-
getStringValueFromModel
public String getStringValueFromModel(FacesContext context) throws ConverterException
Manually perform standard conversion steps to get a string value from the value expression.
- Parameters:
context
- the Faces context.- Returns:
- the string value from the model.
- Throws:
ConverterException
- Since:
- 2.0
-
getConvertedValue
protected Object getConvertedValue(FacesContext context, Object submittedValue) throws ConverterException
Because this class has no
Renderer
, leverage the one from the standard HTML_BASICRenderKit
withcomponent-family: jakarta.faces.Input
andrenderer-type: jakarta.faces.Text
and call itsRenderer.getConvertedValue(jakarta.faces.context.FacesContext, jakarta.faces.component.UIComponent, java.lang.Object)
method.- Overrides:
getConvertedValue
in classUIInput
- Parameters:
submittedValue
- the submitted value.context
- the Faces context.- Returns:
- the converted value.
- Throws:
ConverterException
- Since:
- 2.0
-
-