org.omnifaces.util
Class Components

java.lang.Object
  extended by org.omnifaces.util.Components

public final class Components
extends java.lang.Object

Collection of utility methods for the JSF API with respect to working with UIComponent.

Author:
Bauke Scholtz, Arjan Tijms

Method Summary
static
<T extends javax.faces.component.UIComponent>
T
findComponent(java.lang.String clientId)
          Returns the UI component matching the given client ID search expression.
static
<T extends javax.faces.component.UIComponent>
T
findComponentInChildren(javax.faces.component.UIComponent component, java.lang.String clientId)
          Returns the UI component matching the given client ID search expression relative to the point in the component tree of the given component, searching only in its children.
static
<T extends javax.faces.component.UIComponent>
T
findComponentInParents(javax.faces.component.UIComponent component, java.lang.String clientId)
          Returns the UI component matching the given client ID search expression relative to the point in the component tree of the given component, searching only in its parents.
static
<T extends javax.faces.component.UIComponent>
T
findComponentRelatively(javax.faces.component.UIComponent component, java.lang.String clientId)
          Returns the UI component matching the given client ID search expression relative to the point in the component tree of the given component.
static
<T extends javax.faces.component.UIComponent>
T
getClosestParent(javax.faces.component.UIComponent component, java.lang.Class<T> parentType)
          Returns from the given component the closest parent of the given parent type, or null if none is found.
static javax.faces.component.UIComponent getCurrentComponent()
          Returns the current UI component from the EL context.
static javax.faces.component.UIForm getCurrentForm()
          Returns the currently submitted UI form component, or null if there is none, which may happen when the current request is not a postback request at all, or when the view has been changed by for example a successful navigation.
static
<T> T
getImmediateValue(javax.faces.component.UIInput input)
          Returns the value of the given input component whereby any unconverted submitted string value will immediately be converted/validated as this method is called.
static java.lang.String getLabel(javax.faces.component.UIComponent input)
          Returns the value of the label attribute associated with the given UI component if any, else the client ID.
static java.lang.String getOptionalLabel(javax.faces.component.UIComponent input)
          Returns the value of the label attribute associated with the given UI component if any, else null.
static
<T> T
getValue(javax.faces.component.EditableValueHolder component)
          Returns the value of the given editable value holder component without the need to know if the given component has already been converted/validated or not.
static boolean hasInvokedSubmit(javax.faces.component.UIComponent component)
          Returns whether the given component has invoked the form submit.
static boolean hasSubmittedValue(javax.faces.component.EditableValueHolder component)
          Returns whether the given editable value holder component has a submitted value.
static boolean isEditable(javax.faces.component.UIInput input)
          Returns whether the given UI input component is editable.
static boolean shouldVisitSkipIteration(javax.faces.component.visit.VisitContext context)
          Returns true if the given visit context contains the visit hint that iteration should be skipped.
static
<T extends javax.faces.component.UIComponent>
void
validateHasDirectParent(javax.faces.component.UIComponent component, java.lang.Class<T> parentType)
          Validate if the given component has a direct parent of the given parent type.
static void validateHasNoChildren(javax.faces.component.UIComponent component)
          Validate if the given component has no children.
static
<T extends javax.faces.component.UIComponent>
void
validateHasParent(javax.faces.component.UIComponent component, java.lang.Class<T> parentType)
          Validate if the given component has a parent of the given parent type.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

getCurrentComponent

public static javax.faces.component.UIComponent getCurrentComponent()
Returns the current UI component from the EL context.

Returns:
The current UI component from the EL context.
See Also:
UIComponent.getCurrentComponent(FacesContext)

findComponent

public static <T extends javax.faces.component.UIComponent> T findComponent(java.lang.String clientId)
Returns the UI component matching the given client ID search expression.

Parameters:
clientId - The client ID search expression.
Returns:
The UI component matching the given client ID search expression.
Throws:
java.lang.ClassCastException - When T is of wrong type.
See Also:
UIComponent.findComponent(String)

findComponentRelatively

public static <T extends javax.faces.component.UIComponent> T findComponentRelatively(javax.faces.component.UIComponent component,
                                                                                      java.lang.String clientId)
Returns the UI component matching the given client ID search expression relative to the point in the component tree of the given component. For this search both parents and children are consulted, increasingly moving further away from the given component. Parents are consulted first, then children.

Parameters:
component - the component from which the relative search is started.
clientId - The client ID search expression.
Returns:
The UI component matching the given client ID search expression.
Throws:
java.lang.ClassCastException - When T is of wrong type.
See Also:
UIComponent.findComponent(String)

findComponentInParents

public static <T extends javax.faces.component.UIComponent> T findComponentInParents(javax.faces.component.UIComponent component,
                                                                                     java.lang.String clientId)
Returns the UI component matching the given client ID search expression relative to the point in the component tree of the given component, searching only in its parents.

Parameters:
component - the component from which the relative search is started.
clientId - The client ID search expression.
Returns:
The UI component matching the given client ID search expression.
Throws:
java.lang.ClassCastException - When T is of wrong type.
See Also:
UIComponent.findComponent(String)

findComponentInChildren

public static <T extends javax.faces.component.UIComponent> T findComponentInChildren(javax.faces.component.UIComponent component,
                                                                                      java.lang.String clientId)
Returns the UI component matching the given client ID search expression relative to the point in the component tree of the given component, searching only in its children.

Parameters:
component - the component from which the relative search is started.
clientId - The client ID search expression.
Returns:
The UI component matching the given client ID search expression.
Throws:
java.lang.ClassCastException - When T is of wrong type.
See Also:
UIComponent.findComponent(String)

getClosestParent

public static <T extends javax.faces.component.UIComponent> T getClosestParent(javax.faces.component.UIComponent component,
                                                                               java.lang.Class<T> parentType)
Returns from the given component the closest parent of the given parent type, or null if none is found.

Type Parameters:
T - The generic parent type.
Parameters:
component - The component to return the closest parent of the given parent type for.
parentType - The parent type.
Returns:
From the given component the closest parent of the given parent type, or null if none is found.
Throws:
java.lang.ClassCastException - When T is of wrong type.

shouldVisitSkipIteration

public static boolean shouldVisitSkipIteration(javax.faces.component.visit.VisitContext context)
Returns true if the given visit context contains the visit hint that iteration should be skipped.

Parameters:
context - The involved visit context.
Since:
1.3

getCurrentForm

public static javax.faces.component.UIForm getCurrentForm()
Returns the currently submitted UI form component, or null if there is none, which may happen when the current request is not a postback request at all, or when the view has been changed by for example a successful navigation.

Returns:
The currently submitted UI form component.
See Also:
UIForm.isSubmitted()

isEditable

public static boolean isEditable(javax.faces.component.UIInput input)
Returns whether the given UI input component is editable. That is when it is rendered, not disabled and not readonly.

Parameters:
input - The UI input component to be checked.
Returns:
true if the given UI input component is editable.

getLabel

public static java.lang.String getLabel(javax.faces.component.UIComponent input)
Returns the value of the label attribute associated with the given UI component if any, else the client ID. It never returns null.

Parameters:
input - The UI input component for which the label is to be retrieved.
Returns:
The value of the label attribute associated with the given UI component if any, else the client ID.

getOptionalLabel

public static java.lang.String getOptionalLabel(javax.faces.component.UIComponent input)
Returns the value of the label attribute associated with the given UI component if any, else null.

Parameters:
input - The UI input component for which the label is to be retrieved.
Returns:
The value of the label attribute associated with the given UI component if any, else null.

getValue

public static <T> T getValue(javax.faces.component.EditableValueHolder component)
Returns the value of the given editable value holder component without the need to know if the given component has already been converted/validated or not. Note that it thus returns the unconverted submitted string value when the conversion/validation hasn't been taken place for the given component and it returns the converted object value -if applicable- when conversion/validation has been taken place for the given component.

Parameters:
component - The editable value holder component to obtain the value for.
Returns:
The value of the given editable value holder component.
Throws:
java.lang.ClassCastException - When T is of wrong type.

getImmediateValue

public static <T> T getImmediateValue(javax.faces.component.UIInput input)
Returns the value of the given input component whereby any unconverted submitted string value will immediately be converted/validated as this method is called. This method thus always returns the converted/validated value.

Parameters:
input - The input component to obtain the converted/validated value for.
Returns:
The converted/validated value of the given input component.
Throws:
java.lang.ClassCastException - When T is of wrong type.
Since:
1.2

hasSubmittedValue

public static boolean hasSubmittedValue(javax.faces.component.EditableValueHolder component)
Returns whether the given editable value holder component has a submitted value.

Parameters:
component - The editable value holder component to be checked.
Returns:
true if the given editable value holder component has a submitted value, otherwise false.

hasInvokedSubmit

public static boolean hasInvokedSubmit(javax.faces.component.UIComponent component)
Returns whether the given component has invoked the form submit. In non-ajax requests, that can only be an UICommand component. In ajax requests, that can also be among others an UIInput component.

Parameters:
component - The component to be checked.
Returns:
true if the given component has invoked the form submit.
Since:
1.3

validateHasParent

public static <T extends javax.faces.component.UIComponent> void validateHasParent(javax.faces.component.UIComponent component,
                                                                                   java.lang.Class<T> parentType)
                              throws java.lang.IllegalArgumentException
Validate if the given component has a parent of the given parent type.

Parameters:
component - The component to be validated.
parentType - The parent type to be checked.
Throws:
java.lang.IllegalArgumentException - When the given component doesn't have any parent of the given type.

validateHasDirectParent

public static <T extends javax.faces.component.UIComponent> void validateHasDirectParent(javax.faces.component.UIComponent component,
                                                                                         java.lang.Class<T> parentType)
                                    throws java.lang.IllegalArgumentException
Validate if the given component has a direct parent of the given parent type.

Parameters:
component - The component to be validated.
parentType - The parent type to be checked.
Throws:
java.lang.IllegalArgumentException - When the given component doesn't have a direct parent of the given type.

validateHasNoChildren

public static void validateHasNoChildren(javax.faces.component.UIComponent component)
                                  throws java.lang.IllegalArgumentException
Validate if the given component has no children.

Parameters:
component - The component to be validated.
Throws:
java.lang.IllegalArgumentException - When the given component has any children.