31.2. アノテーション
Seam は Seam コンポーネントを JSF コンバータやバリデータとして使えるようにするアノテーションも提供します。
@Converter@Name("itemConverter") @BypassInterceptors @Converter public class ItemConverter implements Converter { @Transactional public Object getAsObject(FacesContext context, UIComponent cmp, String value) { EntityManager entityManager = (EntityManager) Component.getInstance("entityManager"); entityManager.joinTransaction(); // Do the conversion } public String getAsString(FacesContext context, UIComponent cmp, Object value) { // Do the conversion } }<h:inputText value="#{shop.item}" converter="itemConverter" />Seam コンポーネントを JSF コンバータとして登録します。 上記では、 値をそのオブジェクト表現に変換するときにコンバータが JTA トランザクション内の JPA EntityManager にアクセスします。@Validator@Name("itemValidator") @BypassInterceptors @org.jboss.seam.annotations.faces.Validator public class ItemValidator implements javax.faces.validator.Validator { public void validate(FacesContext context, UIComponent cmp, Object value) throws ValidatorException { ItemController ItemController = (ItemController) Component.getInstance("itemController"); boolean valid = itemController.validate(value); if (!valid) { throw ValidatorException("Invalid value " + value); } } }<h:inputText value="#{shop.item}" validator="itemValidator" />Seam コンポーネントを JSF バリデータとして登録します。 上記では、 バリデータは別の Seam コンポーネントをインジェクトし、 インジェクトされたコンポーネントが値の検証に使用されます。