29.10. Annotations for use with JSF
The following annotations make it easier to work with JSF.
-
@Converter
- Allows a Seam component to act as a JSF converter. The annotated class must be a Seam component, and must implement
javax.faces.convert.Converter
.id
— the JSF converter ID. Defaults to the component name.forClass
— if specified, registers this component as the default converter for a type.
-
@Validator
- Allows a Seam component to act as a JSF validator. The annotated class must be a Seam component, and must implement
javax.faces.validator.Validator
.id
— the JSF validator ID. Defaults to the component name.
29.10.1. Annotations for use with dataTable
The following annotations make it easy to implement clickable lists backed by a stateful session bean. They appear on attributes.
-
@DataModel
@DataModel("variableName")
Outjects a property of typeList
,Map
,Set
orObject[]
as a JSFDataModel
into the scope of the owning component (or theEVENT
scope, if the owning component isSTATELESS
). In the case ofMap
, each row of theDataModel
is aMap.Entry
.value
— name of the conversation context variable. Default to the attribute name.scope
— ifscope=ScopeType.PAGE
is explicitly specified, theDataModel
will be kept in thePAGE
context.
-
@DataModelSelection
@DataModelSelection
Injects the selected value from the JSFDataModel
. (This is the element of the underlying collection, or the map value.) If only one@DataModel
attribute is defined for a component, the selected value from thatDataModel
will be injected. Otherwise, the component name of each@DataModel
must be specified in the value attribute for each@DataModelSelection
.IfPAGE
scope is specified on the associated@DataModel
, then the associated DataModel will be injected in addition to the DataModel Selection. In this case, if the property annotated with@DataModel
is a getter method, then a setter method for the property must also be part of the Business API of the containing Seam Component.value
— name of the conversation context variable. Not needed if there is exactly one@DataModel
in the component.
-
@DataModelSelectionIndex
@DataModelSelectionIndex
Exposes the selection index of the JSFDataModel
as an attribute of the component. (This is the row number of the underlying collection, or the map key.) If only one@DataModel
attribute is defined for a component, the selected value from thatDataModel
will be injected. Otherwise, the component name of each@DataModel
must be specified in the value attribute for each@DataModelSelectionIndex
.value
— name of the conversation context variable. This is not required if there is exactly one@DataModel
in the component.