How to Add the quickQuery Component Using a Model
12.4 Using the query Component
The query component is used for full feature searches. It has a basic and an advanced mode, which the user can toggle between by clicking a button. The features for a basic mode query include: ■ Dropdown list of selectable search criteria operators ■ Selectable WHERE clause conjunction of either AND or OR match all or match any ■ Saved seeded searches ■ Personalized saved searches The advanced mode query form also includes the ability for the user to dynamically add search criteria by selecting from a list of searchable attributes. The user can subsequently delete any criteria that were added. The user can select from the dropdown list of operators to create a query for the search. The input fields may be configured to be list-of-values LOV, number spinners, date choosers, or other input components. To support selecting multiple items from a list, the model must expose a control hint on viewCriteriaItem and the underlying attribute must be defined as an LOV in the corresponding view object. The hint is used to enable or disable the multiple selection or in operator functionality. When multiple selection is enabled, selecting the Equals or Does not equal operator will render the search criteria field as a selectManyChoice component. The user can choose multiple items from the list. The component for the search criteria field depends on the underlying attribute data type, the operator that was chosen, and whether multiple selection is enabled. For example, a search field for an attribute of type String with the Contains operator chosen would be rendered as an inputText component, as shown in Table 12–3 . If the operator is Equals or Does not equal, but multiple selection is not enabled, the component defaults to the component specified in the Default List Type hint from the model. If the underlying attribute is the Number data type, the component that will be rendered is shown in Table 12–4 . Table 12–3 Rendered Component for Search Criteria Field of Type String Operator Component Component When Multiple Select Is Enabled Starts with af:inputText af:inputText Ends with af:inputText af:inputText Equals Default list type hint af:selectManyChoice Does not equal Default list type hint af:selectManyChoice Contains af:inputText af:inputText Does not contain af:inputText af:inputText Is blank None None Is not blank None None Using Query Components 12-15 If the underlying attribute is the Date data type, the component that will be rendered is shown in Table 12–5 . If a search criterions underlying attribute was defined as an LOV, in order for the auto-complete feature to work, the ListOfValues model instance returned by the getModelList method of the AttributeCriterion class must return true for its isAutoCompleteEnabled method. For more information about LOV, see Chapter 11, Using List-of-Values Components. When autoSubmit is set to true, any value change on the search criterion will be immediately pushed to the model. The query component will automatically flush its criterion list only when it has dependent criteria. If the criterion instance has no Table 12–4 Rendered Component for Search Criteria Field of Type Number Operator Component Component When Multiple Select Is Enabled Equals Default list type hint af:selectManyChoice Does not equal Default list type hint af:selectManyChoice Less than af:inputNumberSpinBox af:inputNumberSpinBox Less than or equal to af:inputNumberSpinBox af:inputNumberSpinBox Greater than af:inputNumberSpinBox af:inputNumberSpinBox Greater than or equal to af:inputNumberSpinBox af:inputNumberSpinBox Between af:inputNumberSpinBox af:inputNumberSpinBox Not between af:inputNumberSpinBox af:inputNumberSpinBox Is blank None None Is not blank None None Table 12–5 Rendered Component for Search Criteria Field of Type Date Operator Component Component When Multiple Select Is Enabled Equals Default list type hint af:selectManyChoice Does not equal Default list type hint af:selectManyChoice Before af:inputDate af:inputDate After af:inputDate af:inputDate On or before af:inputDate af:inputDate On or after af:inputDate af:inputDate Between af:inputDate 2 af:inputDate 2 Not between af:inputDate 2 af:inputDate 2 Is blank None None Is not blank None NoneParts
» Oracle Fusion Middleware Online Documentation Library
» ADF Faces as Rich Client Components
» Client-Side Components JavaScript Library Partitioning
» ADF Faces Architectural Features
» ADF Faces Components Oracle Fusion Middleware Online Documentation Library
» How to Download and Install the ADF Faces Demo Application Using the ADF Faces Demo Application
» Overview of the File Explorer Application
» Viewing the Source Code In JDeveloper
» Developing Declaratively in JDeveloper
» How to Create an Application Workspace
» What Happens When You Create an Application Workspace
» What Happens When You Create a JSF JSP Page
» What You May Need to Know About Automatic Component Binding
» How to Create a Facelets XHTML Page
» What Happens When You Create a JSF XHTML Page
» How to Add ADF Faces Components to JSF Pages
» What Happens When You Add Components to a Page
» How to Set Component Attributes
» How to Create an EL Expression
» How to Use EL Expressions Within Managed Beans
» How to Create a Managed Bean in JDeveloper
» What Happens When You Use JDeveloper to Create a Managed Bean
» Viewing ADF Faces Source Code and Javadoc
» Introduction to Using ADF Faces Architecture
» How to Use Inline JavaScript
» How to Import JavaScript Libraries
» What You May Need to Know About Accessing Client Event Sources
» Instantiating Client-Side Components Oracle Fusion Middleware Online Documentation Library
» What You May Need to Know About Finding Components in Naming Containers
» How to Set Property Values on the Client
» How to Unsecure the disabled Property
» How to Create Bonus Attributes
» How to Set Visibility Using JavaScript
» What You May Need to Know About Visible and the isShowing Function
» Introduction to the JSF Lifecycle and ADF Faces
» Using the Immediate Attribute
» What You May Need to Know About Using the Immediate Attribute and the Optimized Lifecycle
» What You May Need to Know About Using an LOV Component and the Optimized Lifecycle
» Using the Client-Side Lifecycle
» Using Subforms to Create Regions on a Page
» Object Scope Lifecycles Oracle Fusion Middleware Online Documentation Library
» How to Use the pageFlowScope Scope Within Java Code
» How to Use the pageFlowScope Scope Without Writing Java Code
» What Happens at Runtime: Passing Values
» Events and Partial Page Rendering
» Client-Side Event Model Introduction to Events and Event Handling
» Using ADF Faces Server Events
» How to Use Client-Side Events
» How to Return the Original Source of the Event
» How to Use Client-Side Attributes for an Event
» How to Block UI Input During Event Execution
» How to Prevent Events from Propagating to the Server
» What Happens at Runtime: How Client-Side Events Work
» What You May Need to Know About Using Naming Containers
» How to Send Custom Events from the Client to the Server
» What Happens at Runtime: How Client and Server Listeners Work Together
» What You May Need to Know About Marshalling and Unmarshalling Data
» Executing a Script Within an Event Response
» How to Use the scrollComponentIntoViewBehavior Tag
» How to Use the Poll Component
» Introduction to ADF Faces Converters and Validators
» Conversion, Validation, and the JSF Lifecycle
» How to Add a Standard ADF Faces Converter
» How to Set Attributes on a Standard ADF Faces Converter
» How to Add oracle.jbo.domain Converters
» How to Create a Custom JSF Converter
» What Happens When You Use a Custom Converter
» Using Validation Attributes How to Add Validation
» In the context menu, choose Insert inside UI component, then ADF Faces to
» Choose a validator tag for example, ValidateDateTimeRange.
» What You May Need to Know About Multiple Validators
» How to Create a Backing Bean Validation Method
» What Happens When You Create a Backing Bean Validation Method How to Create a Custom JSF Validator
» What Happens When You Use a Custom JSF Validator
» Introduction to Partial Page Rendering
» How to Enable Partial Page Rendering
» What You May Need to Know About Using the Browser Back Button
» What You May Need to Know About PPR and Screen Readers
» Enabling Partial Page Rendering Programmatically
» How to Use Partial Page Navigation What You May Need to Know About PPR Navigation
» Introduction to Organizing Content on Web Pages
» Geometry Management and Component Stretching
» Nesting Components Inside Components That Allow Stretching
» Tips for Using Geometry-Managed Components
» How to Configure the document Tag
» How to Use the panelStretchLayout Component
» What You May Need to Know About Geometry Management and the panelStretchLayout Component
» How to Use the panelSplitter Component
» What You May Need to Know About Geometry Management and the panelSplitter Component
» How to Use the panelBorderLayout Component
» How to Use the panelFormLayout Component
» What You May Need to Know About Using the group Component with the panelFormLayout Component
» How to Use the panelDashboard Component
» How to Use the showDetail Component
» How to Use the showDetailHeader Component
» How to Use the panelBox Component
» What You May Need to Know About Disclosure Events
» How to Use the panelAccordion Component
» How to Use the panelTabbed Component
» What You May Need to Know About Geometry Management and the showDetailItem Component
» What You May Need to Know About showDetailItem Disclosure Events
» How to Use the panelHeader Component
» How to Use the decorativeBox Component
» What You May Need to Know About Geometry Management and the decorativeBox Component
» How to Use the panelList Component
» What You May Need to Know About Creating a List Hierarchy
» How to Use the panelGroupLayout Component
» How to Use the spacer Component
» How to Use the Separator Component
» Introduction to Input Components and Forms
» How to Add a Subform to a Page
» How to Add a Reset Button to a Form
» How to Add an inputText Component
» How to Add the Ability to Insert Text into an inputText Component
» How to Add an inputNumberSlider or an inputRangeSlider Component
» How to Add an inputNumberSpinbox Component
» How to Add an inputColor Component
» How to Add an InputDate Component
» What You May Need to Know About Selecting Time Zones Without the inputDate Component
» How to Use Selection Components
» How to Add a selectManyShuttle or selectOrderShuttle Component
» What You May Need to Know About Using a Client Listener for Selection Events
» How to Add a richTextEditor Component
» How to Add the Ability to Insert Text into a richTextEditor Component
» How to Customize the Toolbar
» How to Use the inputFile Component
» What You May Need to Know About Temporary File Storage
» Content Delivery Introduction to Tables, Trees, and Tree Tables
» Row Selection Introduction to Tables, Trees, and Tree Tables
» Editing Data in Tables, Trees, and Tree Tables
» Using Popup Dialogs in Tables, Trees, and Tree Tables
» Accessing Client Table, Tree, and Tree Table Components
» Geometry Management and Table, Tree, and Tree Table Components
» Formatting Tables Displaying Data in Tables
» Formatting Columns Displaying Data in Tables
» How to Display a Table on a Page
» What Happens When You Add a Table to a Page
» What Happens at Runtime: Data Delivery
» What You May Need to Know About Using the Iterator Tag
» How to Use the detailStamp Facet
» What Happens at Runtime: Disclosing Row Data
» How to Add Filtering to a Table
» How to Display Data in Trees
» What Happens When You Add a Tree to a Page
» What Happens at Runtime: Tree Component Events
» What You May Need to Know About Programmatically Expanding and Collapsing Nodes
» How to Display Data in a Tree Table
» How to Add a panelCollection with a Table, Tree, or Tree Table
» How to Export Table, Tree, or Tree Table Data to an External Format
» How to Access Values from a Selection in Stamped Components.
» What You May Need to Know About Accessing Selected Values
» Introduction to List-of-Values Components
» Creating the ListOfValues Data Model
» Using the inputListOfValues Component
» Using the InputComboboxListOfValues Component
» Introduction to Query Components
» Implementing the Model for Your Query
» How to Add the quickQuery Component Using a Model
» How to Use a quickQuery Component Without a Model
» How to Add the Query Component
» Introduction to Using Popup Elements
» How to Create a Panel Window
» How to Create a Context Menu
» What Happens at Runtime: Popup Component Events
» How to Programatically Invoke a Popup
» How to Use the af:showPopupBehavior Tag
» How to Create Contextual Information
» Introduction to Menus, Toolbars, and Toolboxes
» How to Create and Use Menus in a Menu Bar
» How to Create and Use Toolbars
» What Happens at Runtime: Determining the Size of Menu Bars and Toolbars
» What You May Need to Know About Toolbars
» Introduction to Creating a Calendar Application
» Calendar Classes Creating the Calendar
» How to Configure the Calendar Component
» What Happens at Runtime: Calendar Events and PPR
» How to Add Functionality Using Popup Components
» facet name=customToolbarAlign atoolbar
» What Happens at Runtime: Activity Styling
» Introduction to Output Text, Image, Icon, and Media Components
» Displaying Icons Displaying Images
» What You May Need to Know About the Carousel Component and Different Browsers
» Displaying Application Status Using Icons
» How to Allow Playing of Audio and Video Clips
» Introduction to Displaying Tips and Messages
» Displaying Tips for Components
» How to Define Custom Validator and Converter Messages
» What You May Need to Know About Overriding Default Messages Globally
» How to Display Component Messages Inline
» Grouping Components with a Single Label and Message
» How to Create Resource Bundle-Based Help
» How to Create XLIFF-Based Help
» How to Create Managed Bean Help
» How to Use JavaScript to Launch an External Help Window How to Create a Java Class Help Provider
» Introduction to Navigation Components
» How to Use Command Buttons and Command Links
» How to Use Go Buttons and Go Links
» How to Configure a Browser’s Context Menu for Command Links
» What Happens When You Configure a Browser’s Context Menu for Command Links
» How to Use a Command Component to Download Files
» How to Use a Command Component to Reset Input Fields
» Using Navigation Items for a Page Hierarchy
» How to Create the Menu Model Metadata
» What Happens When You Use the Create ADF Menu Model Wizard
» How to Bind to the XMLMenuModel in the JSF Page
» How to Use the breadCrumbs Component
» What You May Need to Know About Using Custom Attributes
» How to Create a Simple Page Hierarchy
» What You May Need to Know About Removing Navigation Tabs
» How to Create the Train Model
» How to Configure Managed Beans for the Train Model
» How to Bind to the Train Model in JSF Pages
» Introduction to Reusable Content
» How to Create a Page Fragment
» What Happens When You Create a Page Fragment
» Adding a Page Fragment Using the Component Palette
» In the Confirm Add Subview Element dialog, click Yes.
» What Happens at Runtime: Resolving Page Fragments
» How to Create a Page Template
» What Happens When You Create a Page Template
» How to Create JSF Pages Based on Page Templates
» What Happens When You Use a Template to Create a Page
» What Happens at Runtime: How Page Templates Are Resolved
» What You May Need to Know About Page Templates and Naming Containers
» How to Create a Declarative Component
» What Happens When You Create a Declarative Component
» How to Deploy Declarative Components
» How to Add Resources to Page Templates and Declarative Components
» What Happens at Runtime: Adding Resources to the Document Header
» ADF Faces Skins Introduction to Skins, Style Selectors, and Style Properties
» Skin Style Selectors Introduction to Skins, Style Selectors, and Style Properties
» Component Style Properties Introduction to Skins, Style Selectors, and Style Properties
» How to Register a Custom Skin
» How to Apply Skins to Messages
» How to Apply Themes to Components
» How to Create a Custom Alias
» How to Configure a Component for Changing Skins Dynamically
» Referring to URLs in a Skin’s CSS File
» How to Version a Custom Skin What Happens When You Version Custom Skins
» Deploying a Custom Skin File in a JAR File
» Introduction to Internationalization and Localization of ADF Faces Pages
» How to Set Resource Bundle Options
» What Happens When You Set Resource Bundle Options
» How to Define the Base Resource Bundle
» How to Edit a Resource Bundle File
» How to Register Locales and Resource Bundles in Your Application
» How to Use Resource Bundles in Your Application
» What You May Need to Know About Custom Skins and Control Hints
» How to Configure a Page for an End User to Specify Locale
» What Happens When You Configure a Page to Specify Locale
» How to Configure Optional Localization Properties
» Introduction to Accessible ADF Faces Pages
» How to Configure Accessibility Support in trinidad-config.xml
» In the Application Navigator, select the trinidad-config.xml file.
» ADF Faces Component Accessibility Guidelines
» Using ADF Faces Table components in Screen Reader mode
» ADF Data Visualization Components Accessibility Guidelines
» How to Define Access Keys for an ADF Faces Component
» How to Define Localized Labels and Access Keys
» How to Use Partial Page Rendering How to Use Scripting
» Running Accessibility Audit Rules
» Graph Defining the ADF Data Visualization Components
» Gauge Defining the ADF Data Visualization Components
» Pivot Table Defining the ADF Data Visualization Components
» Geographic Map Defining the ADF Data Visualization Components
» Gantt Chart Hierarchy Viewer
» Downloading Custom Fonts for Flash Images
» Introduction to the Graph Component
» Graph-Specific Tags Understanding the Graph Tags
» Graph-Specific Child Tags Understanding the Graph Tags
» Child Set Tags Understanding the Graph Tags
» Area Graphs Data Requirements
» Bubble Graph Data Requirements
» Combination Graph Data Requirements
» Funnel Graph Data Requirements
» Line Graph Data Requirements
» Pareto Graph Data Requirements
» Polar Graph Data Requirements
» Radar Graph Data Requirements
» Scatter Graph Data Requirements
» Stock Graphs: High-Low-Close Stock Graph Data Requirements
» Stock Graphs: High-Low-Close with Volume
» Stock Graphs: Open-High-Low-Close Stock Graph Data Requirements
» Stock Graphs: Open-High-Low-Close with Volume
» Storing Tabular Data for a Graph in a Managed Bean
» Click OK. Creating a Graph Using Tabular Data
» What Happens When You Create a Graph Using Tabular Data
» In the Structure window, right-click the seriesSet node and choose Insert inside
» How to Control the Number of Different Colors Used for Series Items
» How to Enable Hiding and Showing Series Items
» In the Property Inspector, choose LD_VALUE from the TextType attribute
» In the Property Inspector, click Configure Slice Label and choose Number Format
» In the Property Inspector, for the af:convertNumber tag, specify the values as
» In the Structure window, right-click the graph node and choose Insert inside
» In the Property Inspector, click Configure Marker and choose Y1 Format.
» In the Property Inspector, optionally enter values as needed for the dvt:y1Format
» In the Property Inspector, click Configure Number Format and specify values as
» What You May Need to Know About Automatic Scaling and Precision
» How to Globally Set Graph Font Using a Skin
» How to Specify the Size of a Graph at Initial Display
» How to Provide for Dynamic Resizing of a Graph
» How to Use a Specific Style Sheet for a Graph
» If you want to specify font characteristics for the title, do the following:
» Customizing Tooltips in Graphs
» How to Customize the Overall Appearance of Pie Graphs
» How to Customize an Exploding Pie Slice
» How to Display Either Data Lines or Markers in Graphs
» How to Change the Appearance of Lines in a Graph Series
» Customizing Pareto Graphs Customizing the Appearance of Specific Graph Types
» Customizing Scatter Graph Series Markers
» In the Structure window, right-click the graph node and choose Go To Properties.
» In the Property Inspector, select the Appearance attributes category and do the
» What Happens When You Create Reference Lines or Areas During Design
» In the Structure window, right-click the graph node, then choose Insert inside
» Use the Property Inspector to enter values for the attributes of the
» For numStops attribute, enter the number of stops to use for the gradient.
» Specifying Transparent Colors for Parts of a Graph
» How to Provide Marker and Legend Dimming
» Adding Alerts and Annotations to Graphs
» How to Configure Graph Components to Display Active Data
» How to Specify Animation Effects for Graphs
» Types of Gauges Introduction to the Gauge Component
» Gauge Terminology Introduction to the Gauge Component
» Storing Tabular Data for a Gauge in a Managed Bean
» Structure of the List of Tabular Data
» How to Create a Gauge Using Tabular Data
» What Happens When You Create a Gauge Using Tabular Data
» How to Change the Type of the Gauge
» In the Style attributes category of the Property Inspector, enter a value for the
» In the Behavior attributes category of the Property Inspector for the
» In the Style attributes category of the Property Inspector, for the StyleClass
» Right-click the dvt:thresholdSet node and choose Insert inside dvt:thresholdSet
» Repeat Step 2 and Step 3 to create each threshold in the gauge from the lowest
» Formatting the Numeric Value in a Gauge Metric Label
» What Happens When You Format the Numbers in a Gauge Metric Label
» How to Format Text in Gauges
» How to Specify an N-Degree Dial
» Controlling the Position of Gauge Labels
» Customizing the Colors and Borders of Gauge Labels
» Controlling the Appearance of Gauge Indicators
» Creating Exterior Tick Labels
» Specifying Transparency for Parts of a Gauge
» In the Structure window, right-click the gauge background node and choose Insert
» What Happens When You Add a Gradient Special Effect to a Gauge
» How to Add Interactivity to Gauges
» Configuring Gauge Components to Display Active Data
» How to Create a Custom Shapes Graphic File
» How to Use a Custom Shapes File What You May Need to Know About Supported SVG Features
» How to Set Custom Shapes Styles
» Pivot Table Elements and Terminology
» Understanding Data Requirements for a Pivot Table
» Pivoting Layers Oracle Fusion Middleware Online Documentation Library
» Using Selection in Pivot Tables
» How to Set the Overall Size of a Pivot Table
» Updating Pivot Tables with Partial Page Rendering
» Exporting from a Pivot Table
» How to Create a CellFormat Object for a Data Cell
» How to Construct a CellFormat Object
» How to Change Format and Text Styles
» How to Create Stoplight and Conditional Formatting in a Pivot Table
» How to Associate a Pivot Filter Bar with a Pivot Table
» Available Map Themes Introduction to Geographic Maps
» Geographic Map Terminology Introduction to Geographic Maps
» Tags for Modifying Map Themes
» Understanding Data Requirements for Geographic Maps
» How to Specify Strategy for Map Zoom Control
» In AutoZoomThemeID, enter the ID of the first theme that will be displayed.
» In ZoomBarStrategy, select the default value MAXZOOM to direct the map to
» If you want to change the starting location on the map, enter latitude and
» How to Total Map Selection Values
» How to Customize Zoom Levels for a Theme
» How to Customize the Labels of a Map Theme How to Customize Color Map Themes
» What Happens When You Customize the Point Images in a Map
» How to Customize the Bars in a Bar Graph Theme
» What Happens When You Customize the Slices in a Map Pie Graph Theme
» How to Add a Toolbar to a Map
» What Happens When You Add a Toolbar to a Map
» Functional Areas of a Gantt Chart
» Description of Gantt Chart Tasks
» Understanding Gantt Chart Tags and Facets
» Scrolling and Panning the List Region or the Chart Region
» Click OK. How to Navigate to a Specific Date in a Gantt Chart
» How to Control the Visibility of Columns in the Table Region
» How to Display Data in a Hierarchical List or a Flat List
» How to Change the Gantt Chart Time Scale
» Data for a Project Gantt Chart
» Data for a Resource Utilization Gantt Chart
» Data for a Scheduling Gantt Chart
» How to Customize a Gantt Chart Legend
» Customizing Gantt Chart Toolbars
» Customizing Gantt Chart Context Menus
» How to Create a New Task Type
» How to Specify Custom Data Filters
» How to Add a Double-Click Event to a Task Bar
» How to Specify Weekdays as Nonworking Days
» How to Identify Specific Dates as Nonworking Days
» How to Apply Read-Only Values to Gantt Chart Features
» Print Options Action Listener to Handle the Print Event
» Creating an ADF Gantt Chart Using Gantt Charts as a Drop Target or Drag Source
» Understanding the Hierarchy Viewer Component
» Hierarchy Viewer Elements and Terminology
» Available Hierarchy Viewer Layout Options
» Data Requirements for Hierarchy Viewers
» How to Configure the Controls on a Node
» How to Specify a Node Definition for an Accessor
» How to Associate a Node Definition with a Particular Set of Data Rows
» How to Configure Upward Navigation in a Hierarchy Viewer
» How to Configure 3D Tilt Panning
» How to Create a Panel Card What Happens at Runtime When a Panel Card Component Is Rendered
» How to Adjust the Size of a Hierarchy Viewer
» How to Include Images in a Hierarchy Viewer
» How to Configure the Display of the Control Panel How to Configure the Display of Links and Labels
» How to Configure Searching in a Hierarchy Viewer
» What You May Need to Know About Configuring Search in a Hierarchy Viewer
» Developing a Custom Component with JDeveloper
» How to Set Up the JDeveloper Custom Component Environment
» In the Application Navigator, right-click the project and choose New.
» In the New Gallery, select Deployment Profile and then ADF Library JAR
» In the Edit JAR Deployment Profile Properties dialog, click OK.
» Select Libraries and Classpath in the left pane.
» Click Add Library. Oracle Fusion Middleware Online Documentation Library
» In the Add Library dialog, select ADF Faces Runtime 11, Facelets Runtime if
» How to Add a Faces Configuration File How to Add a MyFaces Trinidad Skins Configuration File
» How to Add a JavaServer Pages Tag Library Descriptor File
» How to Add a JavaScript Library Feature Configuration File
» How to Add a Facelets Tag Library Configuration File
» How to Create a JavaScript File for a Component
» How to Create a Javascript File for an Event
» How to Create a JavaScript File for a Peer
» How to Add a Custom Component to a JavaScript Library Feature Configuration File
» How to Create a Class for an Event Listener
» How to Create a Class for an Event
» Creating the Component Server-Side Development
» How to Create a Class for a Component
» How to Add the Component to the faces-config.xml File
» How to Create a Class for a Resource Bundle
» In the Structure window, select skin-addition.
» How to Create a Class for a Renderer
» How to Add the Renderer to the faces-config.xml File
» How to Create JSP Tag Properties
Show more