SeamFramework.orgCommunity Documentation
Seam inclus de nombreux contrôles JSF qui sont très utile pour travailler avec Seam. Leur but est d'essayer de compléter les contrôles JSF livrés, et les contrôles provenant de bibliothèques tierces partites. Nous recommandons les bibliothèques de balises Ajax4JSF et ADF faces (maintenant Trinidad) à utiliser avec Seam. Nous ne recommandons pas l'utilisation de la bibliothèque de balises Tomahawk.
Pour utiliser ces balises, définissez l'espace de nommage "s
" dans votre page comme ci-dessous (seulement pour les facelets):
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:s="http://jboss.com/products/seam/taglib"
>
L'exemple ui (NdT: user interface=interface utilisateur) montre l'utilisation de nombreuses balises.
Description
Un bouton qui permet l'invication d'un action qui prends le control sur la propagation de la conversation.Ne soumet pas le formulaire.
Attribus
value
— le label.
action
— une méthode en liaison qui spécifie l'écouteur d'action.
view
— l'identifiant de vue JSF à lier avec.
fragment
— l'identifier de fragment à lier avec.
disabled
— ce lien est il désactivé?
propagation
— détermine le style de propagation de la conversation: begin
, join
, nest
, none
, end
ou endRoot
.
pageflow
— une définition d'enchainement de page pour démarrer. (Ceci est seulement utile quand propagation="begin"
ou propagation="join"
sont utilisés).
includePageParams
— when set to false, page parameters defined in pages.xml
will be excluded from rendering.
Utilisation
<s:button id="cancel"
value="Cancel"
action="#{hotelBooking.cancel}"/>
Viys oiuvez spécifier à la fois la view
et l'action
sur un <s:link />
. Dans ce cas, l'action ne sera appelée qu'une fois quand la rediction vers la vue spécifique interviendra.
L'utilisation d'écouteurs d'action (incluant l'écouteur d'action par défaut de JSF ) n'est pas supporté avec <s:button />
.
Description
Ajoute l'identifiant de conversation au lien JSF ou au bouton (autrement dit. <h:commandLink />
, <s:button />
).
Attribus
Aucun
Description
Ajoute l'identifiant de tâche à un lien sortant (ou à un controle JSF similaire) quand la tâche est disponible via #{task}
.
Attribus
Aucun.
Description
Un lien qui permet l'invocation d'une action avec un contrôle sur la propagation de la conversation. Ne soumet pas le formulaire.
L'utilisation d'écouteurs d'action (incluant l'écouteur d'action par défaut de JSF ) n'est pas supporté avec <s:link />
.
Attribus
value
— le label.
action
— une méthode en liaison qui spécifie l'écouteur d'action.
view
— l'identifiant de vue JSF à lier avec.
fragment
— l'identifier de fragment à lier avec.
disabled
— ce lien est il désactivé?
propagation
— détermine le style de propagation de la conversation: begin
, join
, nest
, none
, end
ou endRoot
.
pageflow
— un définition d'enchainement de page commence. (C'est seulement utile avec l'utilisation propagation="begin"
ou propagation="join"
.)
includePageParams
— when set to false, page parameters defined in pages.xml
will be excluded from rendering.
Utilisation
<s:link id="register" view="/register.xhtml"
value="Register New User"/>
Viys oiuvez spécifier à la fois la view
et l'action
sur un <s:link />
. Dans ce cas, l'action ne sera appelée qu'une fois quand la rediction vers la vue spécifique interviendra.
Description
Personnalise la propagation de la conversation d'un lien de commande ou d'un bouton (ou d'un control JSF similaire). seulement avec les Facelets.
Attribus
type
— détermine le style de la propagation de la conversation : begin
, join
, nest
, none
, end
ou endRoot
.
pageflow
— un définition d'enchainement de page commence. (C'est seulement utile avec l'utilisation propagation="begin"
ou propagation="join"
.)
Utilisation
<h:commandButton value="Apply" action="#{personHome.update}">
<s:conversationPropagation type="join" />
</h:commandButton
>
Description
Spécifie l'action par défaut à exécuter quand le formulaire est soumis en utilisant la touche entrée.
Actuellement, vous ne pouvez l'embarquer qu'au sein des boutons (autrement dit. <h:commandButton />
, <a:commandButton />
ou <tr:commandButton />
).
Vous devez spécifier un identifiant pour la source de l'action. Vous pouvez seulement avoir une action par défaut par formulaire.
Attribus
Aucun.
Utilisation
<h:commandButton id="foo" value="Foo" action="#{manager.foo}">
<s:defaultAction />
</h:commandButton
>
Description
Réalise les conversation de date et d'horaire dans le fuseau horaire de Seam.
Attribus
Aucun.
Utilisation
<h:outputText value="#{item.orderDate}">
<s:convertDateTime type="both" dateStyle="full"/>
</h:outputText
>
Description
Affecte un convertisseur d'entité au composant courrant. C'est vraiment utile pour un bouton radio ou un controle de type combobox.
Le convertisseur fonctionne avec des entités gérées - qu'elle soit simple ou composée. Le convertisseur devrait être capable de trouver les éléments déclaré dans le controle de JSF dans la soumission du formulaire, autrement vous allez recevoir une erreur de validation.
Attribus
Aucun.
La configuration.
Vous devez utiliser des transactions géré par Seam (voir Section 9.2, « Seam managed transactions ») avec le <s:convertEntity />
.
Si votre Contexte du Managed Persistence n'appelle pas entityManager
, alors vous allez avoir besoin de le définir dans components.xml:
<components xmlns="http://jboss.com/products/seam/components" xmlns:ui="http://jboss.com/products/seam/ui"> <ui:jpa-entity-loader entity-manager="#{em}" />
Si votre Session du Managed Persistence n'appelle pas entityManager
, alors vous allez avoir besoin de le définir dans components.xml:
<components xmlns="http://jboss.com/products/seam/components" xmlns:ui="http://jboss.com/products/seam/ui"> <ui:hibernate-entity-loader />
Si votre Session du Managed Persistence n'appelle pas session
, alors vous allez avoir besoin de le définir dans components.xml:
<components xmlns="http://jboss.com/products/seam/components" xmlns:ui="http://jboss.com/products/seam/ui"> <ui:hibernate-entity-loader session="#{hibernateSession}" />
Si vous voulez utiliser plus d'un gestionnaire d'entité avec le convertisseur d'entité, vous devez créer une copie du convertisseur d'entité pour chaque gestionnaire d'entité dans components.xml
- notez comment le convertisseur d'entité va déléguer au chargeur de l'entité la réalisation des opérations de persistance:
<components xmlns="http://jboss.com/products/seam/components" xmlns:ui="http://jboss.com/products/seam/ui"> <ui:entity-converter name="standardEntityConverter" entity-loader="#{standardEntityLoader}" /> <ui:jpa-entity-loader name="standardEntityLoader" entity-manager="#{standardEntityManager}" /> <ui:entity-converter name="restrictedEntityConverter" entity-loader="#{restrictedEntityLoader}" /> <ui:jpa-entity-loader name="restrictedEntityLoader" entity-manager="#{restrictedEntityManager}" />
<h:selectOneMenu value="#{person.continent}"> <s:selectItems value="#{continents.resultList}" var="continent" label="#{continent.name}" /> <f:converter converterId="standardEntityConverter" /> </h:selectOneMenu >
Utilisation
<h:selectOneMenu value="#{person.continent}" required="true">
<s:selectItems value="#{continents.resultList}" var="continent"
label="#{continent.name}"
noSelectionLabel="Please Select..."/>
<s:convertEntity />
</h:selectOneMenu
>
Description
Affecte un convertisseur d'enumérateur au composant courrant. C'est en premier lieu utile pour les boutons radio et les controles de type combobox.
Attribus
Aucun.
Utilisation
<h:selectOneMenu value="#{person.honorific}">
<s:selectItems value="#{honorifics}" var="honorific"
label="#{honorific.label}"
noSelectionLabel="Please select" />
<s:convertEnum />
</h:selectOneMenu
>
Description
javax.faces.convert.Converter
pour java.util.concurrent.atomic.AtomicBoolean
.
Attribus
Aucun.
Utilisation
<h:outputText value="#{item.valid}"> <s:convertAtomicBoolean /> </h:outputText >
Description
javax.faces.convert.Converter
pour java.util.concurrent.atomic.AtomicInteger
.
Attribus
Aucun.
Utilisation
<h:outputText value="#{item.id}"> <s:convertAtomicInteger /> </h:outputText >
Description
javax.faces.convert.Converter
pour java.util.concurrent.atomic.AtomicLong
.
Attribus
Aucun.
Utilisation
<h:outputText value="#{item.id}"> <s:convertAtomicLong /> </h:outputText >
Description
La balise à insérer dans un controle de saisie pour valider que la valeur parente est équale (ou différente) à la valeur du controle référencé.
Attribus
for
— L'identifiant du controle à comparer pour validation.
message
— Le message à afficher en cas d'echec.
required
— Faux va désactiver la validation d'une valeur pour toutes les champs de saisies.
messageId
— L'identifiant de message à afficher en cas d'echec.
operator
— Quel opérateur à utiliser avec la comparaison des valeurs. Les opérateurs valident sont :
equal
— Valide que value.equals(forValue)
not_equal
— Valide que !value.equals(forValue)
greater
— Valide que ((Comparable)value).compareTo(forValue)
> 0
greater_or_equal
— Valide que ((Comparable)value).compareTo(forValue)
>= 0
less
— Valide que ((Comparable)value).compareTo(forValue) <0
less_or_equal
— Valide que ((Comparable)value).compareTo(forValue) <= 0
Utilisation
<h:inputText id="name" value="#{bean.name}"/> <h:inputText id="nameVerification" > <s:validateEquality for="name" /> </h:inputText >
Description
Un controle sans partie visible, qui valide un champ de saisi JSF par rapport à une propriété liée en utilisant un Validator d'Hibernate.
Attribus
Aucun.
Utilisation
<h:inputText id="userName" required="true"
value="#{customer.userName}">
<s:validate />
</h:inputText>
<h:message for="userName" styleClass="error" />
Description
Un controle sans partie visible, qui valide tous les champs de saisie enfants de JSF par rapport à une propriété liée en utilisant un Validator d'Hibernate.
Attribus
Aucun.
Utilisation
<s:validateAll>
<div class="entry">
<h:outputLabel for="username"
>Username:</h:outputLabel>
<h:inputText id="username" value="#{user.username}"
required="true"/>
<h:message for="username" styleClass="error" />
</div>
<div class="entry">
<h:outputLabel for="password"
>Password:</h:outputLabel>
<h:inputSecret id="password" value="#{user.password}"
required="true"/>
<h:message for="password" styleClass="error" />
</div>
<div class="entry">
<h:outputLabel for="verify"
>Verify Password:</h:outputLabel>
<h:inputSecret id="verify" value="#{register.verify}"
required="true"/>
<h:message for="verify" styleClass="error" />
</div>
</s:validateAll
>
Description
"Décore" un champs de saisie JSF quand la validation échoue ou quand required="true"
est définie.
Attribus
template
— le modèle de facelets à utiliser pour décorer le composant
enclose
— si vrai, le modèle utilisé pour décorer le champs de saisie est encadré par l'élément spécifié par l'attribut "element". Par défaut, c'est un élément div.
element
— l'élément qui englobe ce modèle utilisé pour décorer le champs de sasie. Par défaut, le modèl esr inclus dans un élément div.
#{invalid}
et #{required}
sont disponible dans s:decorate
; #{required}
est évalué à true
si vous avez défini que le composant de saisie est décoré comme prévus , et #{invalid}
évalué à true
si une erreur de validation apparait.
Utilisation
<s:decorate template="edit.xhtml">
<ui:define name="label"
>Country:</ui:define>
<h:inputText value="#{location.country}" required="true"/>
</s:decorate
>
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:s="http://jboss.com/products/seam/taglib">
<div
>
<s:label styleClass="#{invalid?'error':''}">
<ui:insert name="label"/>
<s:span styleClass="required" rendered="#{required}"
>*</s:span>
</s:label>
<span class="#{invalid?'error':''}">
<s:validateAll>
<ui:insert/>
</s:validateAll>
</span>
<s:message styleClass="error"/>
</div
>
</ui:composition
>
Description
Rends un<div>
HTML.
Attribus
Aucun.
Utilisation
<s:div rendered="#{selectedMember == null}">
Sorry, but this member does not exist.
</s:div
>
Description
Rend un <span>
HTML.
Attribus
title
— Le titre d'un span.
Utilisation
<s:span styleClass="required" rendered="#{required}" title="Small tooltip"
>*</s:span
>
Description
Un composant non-rendu utile pour activer/désactiver le rendu de ces enfants.
Attribus
Aucun.
Utilisation
<s:fragment rendered="#{auction.highBidder ne null}">
Current bid:
</s:fragment
>
Description
"Décore" un champs de saisie JSF avec ce label. Ce label sera placé dans un <label>
de la balise HTM, et il sera associé avec le composant de saisie JSF le plus proche. C'est souvent utilisé avec <s:decorate>
.
Attribus
style
— Le style du controle
styleClass
— La classe du style du controle
Utilisation
<s:label styleClass="label">
Country:
</s:label>
<h:inputText value="#{location.country}" required="true"/>
Description
La vérification que les valeurs soumises sont du Texte de Seam valide
Attribus
Aucun.
Description
Affiche un Seam Text, un texte avec un formatage riche contenant des balises très utiles pour les blogs, les wikis and toute application qui pourait avoir besoin de textes avec un formatage riche. Allez voir le chapitre sur Seam Text pour voir toutes les utilisations.
Attribus
value
— un expréssion EL spécifiant que le texte avec un formatage riche à rendre.
Utilisation
<s:formattedText value="#{blog.text}"/>
L'exemple
Description
Produit un jeton aléatoire qui doit être inséré dans un champs caché de formulaire pour aider à sécuriser l'envoie de 'un formulaire contre les attaques "cross-site request forgery (XSRF)". Notez que le navigateur doit avoir les cookies actifs pour permettre de soumettre le formulaire qui est inlus avec ce composant.
Attribus
requireSession
— indique que l'identifiant de session devrait être inclus dans la signature du formulaire, améliorant la liaison entre le jeton et la session. Cette valeur peut être défini à faux si le mode "construire avant de restorer" des Facelets est activé (par défaut en JSF 2.0). (par défaut: false)
enableCookieNotice
— indiqye que la vérification en JavaScript peut être insérée dans la page pour vérifier que les cookies sont activés dans le navigateur. Si les cookies ne sont pas activés, affiche une information pour l'utilisateur ques les formulaires postées ne font pas fonctionner. (par déefaut: false)
allowMultiplePosts
— indique que cela autorise le même formulaire à être soumis plusieurs fois avec la même signature (aussi longtemps qye la vue ne change pas). C'est un besoin classique dans le formulaire qui réalise des appels Ajax mais ne se ré-affiche pas lui-même ou, en dernière extrémitée, le composant UIToken. TM'approche a préférer est d'avoir le composant UIToken ré-affichant tout appel à Ajax où le composant UIToken devrait être exécuté. (par défaut: false)
Utilisation
<h:form>
<s:token enableCookieNotice="true" requireSession="false"/>
...
</h:form
>
Description
Création d'un SelectItem
depuis une valeur énumérée.
Attribus
enumValue
— la représentation en texte d'une valeur énumérée.
label
— le label à utiliser pendant le rendu de SelectItem
.
Utilisation
<h:selectOneRadio id="radioList"
layout="lineDirection"
value="#{newPayment.paymentFrequency}">
<s:convertEnum />
<s:enumItem enumValue="ONCE" label="Only Once" />
<s:enumItem enumValue="EVERY_MINUTE" label="Every Minute" />
<s:enumItem enumValue="HOURLY" label="Every Hour" />
<s:enumItem enumValue="DAILY" label="Every Day" />
<s:enumItem enumValue="WEEKLY" label="Every Week" />
</h:selectOneRadio
>
Description
Créer un List<SelectItem>
depuis un type suivant List, Set, DataModel ou Array.
Attribus
value
— une expression EL spécifiant que les données qui encadrent le List<SelectItem>
var
— défini le nom de la variable locale qui conserve l'objet courrant pendant l'itération
label
— le label à utiliser pendant le rendue de SelectItem
. Peut référencer la variable var
.
itemValue
— La valeur à retourner au serveur si l'option est sélectionné. Optionnellement, par défaut l'objet var
est utilisé. Peut référencer la variable var
.
disabled
— si vrai le SelectItem
sera rendu désactivé. Peut référencer la variable var
.
noSelectionLabel
— spécifie le label (optionnel) à placer en haut de la liste (si required="true"
est aussi spécifié alors la sélection de la valeur déclenchera une erreur de validation).
hideNoSelectionLabel
— si vrai, le noSelectionLabel
sera masqué quand une valeur est sélectionné
Utilisation
<h:selectOneMenu value="#{person.age}"
converter="ageConverter">
<s:selectItems value="#{ages}" var="age" label="#{age}" />
</h:selectOneMenu
>
Description
Rend un control de téléchargement de fichier. Ce control doit être utilisé dans un formulaire avec un type d'encodage multipart/form-data
, autrement dit:
<h:form enctype="multipart/form-data"
>
Pour les requêtes multipart, le filtre de servlet Multipart de Seam doit aussi être configuré dans web.xml
:
<filter>
<filter-name
>Seam Filter</filter-name>
<filter-class
>org.jboss.seam.servlet.SeamFilter</filter-class>
</filter>
<filter-mapping>
<filter-name
>Seam Filter</filter-name>
<url-pattern
>/*</url-pattern>
</filter-mapping
>
La configuration.
Les options de configurations suivant pour les requêtes multipart peuvent être configuré dans components.xml:
createTempFiles
— si cette option est définie à true, les fichiers téléchargé seront stocké dans un fichier temporaire au lieu d'être en mémoire.
maxRequestSize
— la taille maximale de la requête de téléchargement de fichier, en octets.
Voici un exemple:
<component class="org.jboss.seam.web.MultipartFilter">
<property name="createTempFiles"
>true</property>
<property name="maxRequestSize"
>1000000</property>
</component
>
Attribus
data
— ette valeur correspondante reçoit les données binaire du fichier. Le champs de réception doit êtree déclaré comme un byte[]
ou un InputStream
(nécéssaire).
contentType
— cette valeur correspondante recoit le type du contenu de fichier (optionnel).
fileName
— cette valeur correspondate reçois le nom du fichier (optionnel).
fileSize
— cette valeur correspondante reçois la taille du fichier (optionnelle).
accept
— une liste séparée de virgules de types de contenu, peut ne pas être supporté par le navigateur. Par exemple "images/png,images/jpg"
, "images/*"
.
style
— Le style du controle
styleClass
— La classe du style du controle
Utilisation
<s:fileUpload id="picture" data="#{register.picture}"
accept="image/png"
contentType="#{register.pictureContentType}" />
Description
Met en cache le fragment de page rendue en utilisant JBoss Cache. Notez que <s:cache>
utilise actuellement l'instance de JBoss Cache géré par le composant livré pojoCache
.
Attribus
key
— la clef vers le contenu rendu mit en cache, souvent une expression de valeur. Par exemple, si nous mettons en cache un fragment de page qui affiche un document, nous devrions utiliser key="Document-#{document.id}"
.
enabled
— une expression de valeur qui détermine si le couche devrait être utilisé.
region
— un noeud JBoss Cache à utiliser (differents noeuds peuvent avoir des politiques d'expirations différentes).
Utilisation
<s:cache key="entry-#{blogEntry.id}" region="pageFragments">
<div class="blogEntry">
<h3
>#{blogEntry.title}</h3>
<div>
<s:formattedText value="#{blogEntry.body}"/>
</div>
<p>
[Posted on 
<h:outputText value="#{blogEntry.date}">
<f:convertDateTime timezone="#{blog.timeZone}" locale="#{blog.locale}"
type="both"/>
</h:outputText
>]
</p>
</div>
</s:cache
>
Description
Ue balise qui fonctionne comme un fournissuer de téléchargement de fichier. Elle doit être seule dans la page JSF. Pour pouvoir utiliser ce control, web.xml doit être configuré comme ceci.
La configuration.
<servlet>
<servlet-name
>Document Store Servlet</servlet-name>
<servlet-class
>org.jboss.seam.document.DocumentStoreServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name
>Document Store Servlet</servlet-name>
<url-pattern
>/seam/docstore/*</url-pattern>
</servlet-mapping>
Attribus
data
— Les données qui devrait être téléchargées. Peuvent être un java.util.File, un InputStream ou un tableau d'octet.
fileName
— Nom de fichier qui doit être servis
contentType
— type contenu du fichier à télécharger
disposition
— la disposition à utiliser. Par défaut c'est inline
Utilisation
Voici un exemple de comment utiliser ces balises:
<s:resource xmlns="http://www.w3.org/1999/xhtml"
xmlns:s="http://jboss.com/products/seam/taglib"
data="#{resources.data}"
contentType="#{resources.contentType}"
fileName="#{resources.fileName}" />
Le bean dénommé resources
est le bean de renfort qui donne des paramètres de requête et délivre un fichier spécifique, voir s:download
.
Description
Construit un lien RESTful vers une <s:resource>
. Encapsule f:param
pour construire l'url.
src
— Fichier de ressource distribuant les fichiers.
Attribus
<s:download src="/resources.xhtml">
<f:param name="fileId" value="#{someBean.downloadableFileId}"/>
</s:download
>
Sera produira quelque chose comme: http://localhost/resources.seam?fileId=1
Description
Une extension de <h:graphicImage>
qui permet à l'image d'être cré dans un Seam Component; d'autres transformation peuvent être appliqué à l'image.
Tous les attributs de <h:graphicImage>
sont supportés, à l'identique:
Attribus
value
— image à afficher. Peut être un cheminString
(chargé depuis le classpath), un byte[]
, un java.io.File
, un java.io.InputStream
ou un java.net.URL
. Les formats d'images courrant supportés sont image/png
, image/jpeg
et image/gif
.
fileName
— s'il n'est pas indiqué l'image servie aura un nom de fichier générée. Si vous voulez nommé votre fichier, vous devriez l'indiquer ici. Ce nom devrait être unique
Les transformations
Pour appliquer une transormation à une image, vous pouvez inclure une balise spécifiant la transformation à appliquer. Seam supporte actuellement ces transformations:
<s:transformImageSize>
width
— nouvelle largeur de l'image
height
—nouvelle hauteur de l'image
maintainRatio
— Si true
, et one de width
/height
sont spécifiés, l'image sera retaillée, la dimension non-identiquée sera calculé pour maintenir le ratio.
factor
— met à l'echelle l'image du facteur indiqué
<s:transformImageBlur>
radius
— réaliser un flou de convolution avec un rayon donné
<s:transformImageType>
contentType
— altère le type de l'image à image/jpeg
ou à image/png
Il est facile de créer votre propre transformation - créez un UIComponent
qui implémente org.jboss.seam.ui.graphicImage.ImageTransform
. A l'intérieur d'une méthode applyTransform()
utilisant image.getBufferedImage()
pour obtenir l'image originelle et image.setBufferedImage()
pour affecter votre image transformée. Les transformations sont appliqué dans l'odre spécifié dans la vue.
Utilisation
<s:graphicImage rendered="#{auction.image ne null}"
value="#{auction.image.data}">
<s:transformImageSize width="200" maintainRatio="true"/>
</s:graphicImage
>
Description
Génération des squelettes Javascript nécéssaire pour l'utilisation de Seam Remoting.
Attribus
include
— une liste séparée par des virrgules de noms de composants (ou de nomes de classe pleinement qualifiés) pour lesquels il faut générer les squelettes de Seam Remoting Javascript stubs. Voir Chapitre 25, Remoting pour plus de détails.
Utilisation
<s:remote include="customerAction,accountAction,com.acme.MyBean"/>
Seam fourni aussi des annotations pour vous permettre d'utiliser les composants de Seam comme un convertisseur de JSF et les validateurs:
@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" />
Enregistre le composant de Seam comme un convertisseur JSF. Visible ici un convertisseur qui est capable d'accéder au JPA EntityManager dans une transaction JTA, pendant la conversion d'une valeur vers sa représentation comme objet.
@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" />
Enregistre le composant de Seam comme un validateur JSF. Visible ici une validateur qui injecte un autre composant de Seam, le composant injecté est utilisé pour valider la valeur.