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 type List, Map, Set or Object[] as a JSF DataModel into the scope of the owning component (or the EVENT scope, if the owning component is STATELESS). In the case of Map, each row of the DataModel is a Map.Entry.
  • value — name of the conversation context variable. Default to the attribute name.
  • scope — if scope=ScopeType.PAGE is explicitly specified, the DataModel will be kept in the PAGE context.
@DataModelSelection
@DataModelSelection
Injects the selected value from the JSF DataModel. (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 that DataModel will be injected. Otherwise, the component name of each @DataModel must be specified in the value attribute for each @DataModelSelection.
If PAGE 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 JSF DataModel 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 that DataModel 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.