Class UIImportConstants

  • All Implemented Interfaces:
    java.util.EventListener, PartialStateHolder, StateHolder, TransientStateHolder, ComponentSystemEventListener, FacesListener, SystemEventListenerHolder


    public class UIImportConstants
    extends UIComponentBase

    UIImportConstants imports a mapping of all constant field values of the given type in the current view.

    The ViewDeclarationLanguage implementation must cause an instance of this component to be placed in the view for each occurrence of an <f:importConstants /> element placed inside of an <f:metadata /> element. The user must place <f:metadata /> as a direct child of the UIViewRoot. The ViewMetadata.createMetadataView(javax.faces.context.FacesContext) must take care of actual task of importing the constants.

    Instances of this class participate in the regular JSF lifecycle, including on Ajax requests.

    The purpose of this component is to provide a mapping of all constant field values of the given type in the current view. Constant field values are all public static final fields of the given type. The map key represents the constant field name as String. The map value represents the actual constant field value. This works for classes, interfaces and enums.

    Usage

    The below constant fields:

     package com.example;
     
     public class Foo {
         public static final String FOO1 = "foo1";
         public static final String FOO2 = "foo2";
     }
     
     package com.example;
     
     public interface Bar {
         public static final String BAR1 = "bar1";
         public static final String BAR2 = "bar2";
     }
     
     package com.example;
     
     public enum Baz {
         BAZ1, BAZ2;
     }
     

    Can be imported as below:

     <f:metadata>
         <f:importConstants type="com.example.Foo" />
         <f:importConstants type="com.example.Bar" var="Barrr" />
         <f:importConstants type="com.example.Baz" />
     </f:metadata>
     

    And can be referenced as below:

     #{Foo.FOO1}, #{Foo.FOO2}, #{Barrr.BAR1}, #{Barrr.BAR2}, #{Baz.BAZ1}, #{Baz.BAZ2}
     
     <h:selectOneMenu value="#{bean.baz}" >
         <f:selectItems value="#{Baz}" />
     </h:selectOneMenu>
     
    Since:
    2.3
    • Field Detail

      • COMPONENT_TYPE

        public static final java.lang.String COMPONENT_TYPE

        The standard component type for this component.

        See Also:
        Constant Field Values
      • COMPONENT_FAMILY

        public static final java.lang.String COMPONENT_FAMILY

        The standard component family for this component.

        See Also:
        Constant Field Values
    • Constructor Detail

      • UIImportConstants

        public UIImportConstants​()

        Create a new UIImportConstants instance with renderer type set to null.

    • Method Detail

      • getFamily

        public java.lang.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 appropriate Renderer for this component instance. Note this method should NOT return null

        Specified by:
        getFamily in class UIComponent
        Returns:
        the component family (not null).
      • getType

        public java.lang.String getType​()

        Returns the fully qualified name of the type to import the constant field values for.

        Returns:
        The fully qualified name of the type to import the constant field values for.
      • setType

        public void setType​(java.lang.String type)

        Sets the fully qualified name of the type to import the constant field values for.

        Parameters:
        type - The fully qualified name of the type to import the constant field values for.
      • getVar

        public java.lang.String getVar​()

        Returns name of request scope attribute under which constants will be exposed as a Map.

        Returns:
        Name of request scope attribute under which constants will be exposed as a Map.
      • setVar

        public void setVar​(java.lang.String var)

        Sets name of request scope attribute under which constants will be exposed as a Map.

        Parameters:
        var - Name of request scope attribute under which constants will be exposed as a Map.
      • setValueExpression

        public void setValueExpression​(java.lang.String name,
                                       ValueExpression binding)

        Set the ValueExpression used to calculate the value for the specified attribute or property name, if any. If a ValueExpression is set for the var property, throw an illegal argument exception.

        Overrides:
        setValueExpression in class UIComponent
        Parameters:
        name - Name of the attribute or property for which to set a ValueExpression
        binding - The ValueExpression to set, or null to remove any currently set ValueExpression
        Throws:
        java.lang.IllegalArgumentException - If name is one of id, parent, or var.
        java.lang.NullPointerException - If name is null.