SeamFramework.orgCommunity Documentation
Quando si scrive un'applicazione Seam vengono impiegate molte annotazioni. Seam ti consente di usare annotazioni per ottenere uno stile dichiarativo di programmazione. La maggior parte delle annotazioni che si useranno sono definite dalla specifica EJB3.0. Le annotazioni per la validazione dei dati sono definite dal pacchetto Hibernate Validator. Infine Seam definisce un suo set di annotazioni che verranno descritte in questo capitolo.
Tutte queste annotazioni sono definite nel pacchetto org.jboss.seam.annotations
.
Il primo gruppo di annotazioni consente di definire un componente Seam. Queste annotazioni appaiono sulla classe del componente.
@Name
@Name("componentName")
Definisce il nome del componente Seam per una classe. Quest'annotazione è richiesta per tutti i componenti Seam.
@Scope
@Scope(ScopeType.CONVERSATION)
Definisce il contesto di default del componente. I possibili valori sono definiti dalla enumeration ScopeType
: EVENT, PAGE, CONVERSATION, SESSION, BUSINESS_PROCESS, APPLICATION, STATELESS
.
Quando non viene specificato nessuno scope, quello di default dipende dal tipo di componente. Per session bean stateless, il default è STATELESS
. Per gli entity bean ed i session bean stateful, il default è CONVERSATION
. Per i JavaBean, il default è EVENT
.
@Role
@Role(name="roleName", scope=ScopeType.SESSION)
Consente ad un componente Seam di venir associato a variabili di contesto multiple. Le annotazioni @Name
/@Scope
definiscono un "ruolo di default". Ciascuna annotazione @Role
definisce un ruolo addizionale.
nome
— il nome della variabile di contesto.
scope
— lo scope della variabile di contesto. Quando non viene specificato esplicitamente alcuno scope, il default dipende dal tipo di componente, come sopra.
@Roles
@Roles({
@Role(name="user", scope=ScopeType.CONVERSATION),
@Role(name="currentUser", scope=ScopeType.SESSION)
})
Consente la specificazione di ruoli multipli addizionali.
@BypassInterceptors
@BypassInterceptors
Disabilita tutti gli interceptor di Seam per un particolare componente o metodo di un componente.
@JndiName
@JndiName("my/jndi/name")
Specifica il nome JNDI che Seam userà per la ricerca del componente EJB. Se non è stato specificato esplicitamente alcun nome, Seam userà il pattern JNDI specificato da org.jboss.seam.core.init.jndiPattern
.
@Conversational
@Conversational
Specifica che il componente con scope conversazione è conversazionale, il che significa che nessun metodo del componente potrà essere chiamato amenoché sia attiva una conversazione long-running.
@PerNestedConversation
@PerNestedConversation
Limita lo scope di un componente con scope conversazione alla sola conversazione padre in cui è stato istanziato. L'istanza del componente non sarà visibile alle conversazioni figlie innestate, che otterranno la propria istanza.
Attenzione: questo è mal definito, poiché implica che un componente sarà visibile per alcune parti del ciclo di richiesta, ed invisibile dopo questo. Non è raccomandato che un'applicazioni usi questa caratteristica!
@Startup
@Scope(APPLICATION) @Startup(depends="org.jboss.seam.bpm.jbpm")
Specifica che un componente con scope applicazione venga avviato immediatamente in fase di inizializzazione. E' usato principalmente per certi componenti predefiniti che avviano un'infrastruttura critica, quali JNDI, datasource, ecc.
@Scope(SESSION) @Startup
Specifica che un componente con scope di sessione viene avviato immediatamente alla creazione della sessione.
depends
— specifica che i componenti con nome vengano avviati per primi, se sono installati.
@Install
@Install(false)
Specifica se oppure no, un componente debba essere installato di default. La mancanza dell'annotazione @Install
indica che un componente viene installato.
@Install(dependencies="org.jboss.seam.bpm.jbpm")
Specifica che un componente debba essere installato solo se i componenti elencati come dipendenze sono pure installati.
@Install(genericDependencies=ManagedQueueSender.class)
Specifica che un componente debba essere installato solo se un componente che è implementato da una certa classe è installato. Questo è utile quando la dipendenza non ha un singolo nome ben noto.
@Install(classDependencies="org.hibernate.Session")
Specifica che un componente debba essere installato solo se la classe (con nome) è nel classpath.
@Install(precedence=BUILT_IN)
Specifica la precedenza del componente. Se esistono più componenti con lo stesso nome, verrà installato quello con precedenza più alta. I valori definiti di precedenza sono (in ordine ascendente):
BUILT_IN
— Precedenza su tutti i componenti Seam predefiniti
FRAMEWORK
— Precedenza per l'uso di componenti di framework che estendono Seam
APPLICATION
— Precedenza ai componenti di applicazione (precedenza di default)
DEPLOYMENT
— Precedenza all'uso di componenti che fanno override dei componenti di applicazione in un particolare deploy
MOCK
— Precedenza per oggetti mock usati nei test
@Synchronized
@Synchronized(timeout=1000)
Specifica che un componente venga acceduto in modo concorrente da più client, e che Seam serializzi le richieste. Se una richiesta non è in grado di ottenere il lock sul componente in un determinato periodo di timeout, viene sollevata un'eccezione.
@ReadOnly
@ReadOnly
Specifica che un componente JavaBean o metodo di componente non richieda la replicazione dello stato alla fine dell'invocazione.
@AutoCreate
@AutoCreate
Specifica che un componente verrà automaticamente creato, anche se il client non specifica create=true
.
Le prossime due annotazioni controllano la bijection. Questi attributi vengono impiegati nelle variabili d'istanza di un componente o nei metodi di accesso alle proprietà.
@In
@In
Specifica che un attributo di componente debba essere iniettato da una variabile di contesto all'inizio di ogni invocazione del componente. Se la variabile di contesto è null, viene lanciata un'eccezione.
@In(required=false)
Specifica che un attributo di componente debba essere iniettato da una variabile di contesto all'inizio di ogni invocazione del componente. La variabile di contesto può essere null.
@In(create=true)
Specifica che un attributo di componente debba essere iniettato da una variabile di contesto all'inizio di ogni invocazione del componente. Se la variabile di contesto è null, viene istanziata da Seam un'istanza del componente.
@In(value="contextVariableName")
Specifica il nome della variabile di contesto in modo esplicito, invece di usare il nome annotato della variabile d'istanza.
@In(value="#{customer.addresses['shipping']}")
Specifica che un attributo di componente debba essere iniettato valutando un'espressione JSF EL all'inizio di ogni invocazione del componente.
value
— specifica il nome di una variabile di contesto. Di default è il nome dell'attributo del componente. In alternativa, specifica un'espressione JSF EL, racchiusa da #{...}
.
create
— specifica che Seam debba istanziare il componente con lo stesso nome della variabile di contesto se questa è indefinita (null) in tutti i contesti. Di default è false.
required
— specifica che Seam lanci un'eccezione se la variabile di contesto è indefinita in tutti i contesti.
@Out
@Out
Specifica che un attributo di componente (di Seam) venga messo in outjection nella sua variabile di contesto alla fine dell'invocazione. Se l'attributo è null, viene lanciata un'eccezione.
@Out(required=false)
Specifica che un attributo di componente (di Seam) venga messo in outjection nella sua variabile di contesto alla fine dell'invocazione. L'attributo può essere null.
@Out(scope=ScopeType.SESSION)
Specifica che un attributo di componente che non è un tipo di componente di Seam venga messo in outjection in uno specifico scope alla fine dell'invocazione.
In alternativa, se non è specificato alcuno scope in modo esplicito, viene usato lo scope del componente con l'attributo @Out
(o lo scope EVENT
se il componente è stateless).
@Out(value="contextVariableName")
Specifica il nome della variabile di contesto in modo esplicito, invece di usare il nome annotato della variabile d'istanza.
value
— specifica il nome della variabile di contesto. Di default è il nome dell'attributo del componente.
required
— specifica che Seam debba lanciare un'eccezione se l'attributo del componente è null durante l'outjection.
Si noti che è piuttosto comune l'uso di queste annotazioni assieme, per esempio:
@In(create=true) @Out private User currentUser;
La prossima annotazione supporta il pattern manager component, dove un componente Seam che gestisce il ciclo di vita di un'istanza di qualche altra classe deve essere iniettata. Appare sul metodo getter del componente.
La prossima annotazione supporta il pattern factory component dove un componente Seam è responsabile dell'inizializzazione del valore di una variabile di contesto. Questo è utile in particolare per inizializzare qualsiasi stato occorrente per il rendering della risposta in una richiesta non-faces. Appare su un metodo di componente.
@Factory
@Factory("processInstance") public void createProcessInstance() { ... }
Specifica che il metodo del componente viene usato per inizializzare il valore della variabile di contesto con nome, quando la variabile di contesto non ha valore. Questo stile viene usato con metodi che ritornano void
.
@Factory("processInstance", scope=CONVERSATION) public ProcessInstance createProcessInstance() { ... }
Specifica che il metodo restituisce un valore che Seam dovrebbe usare per inizializzare il valore della variabile di contesto con nome, quando la variabile di contesto non ha valore. Questo stile è usato con metodi che restituiscono un valore. Se non viene specificato esplicitamente alcuno scope, viene usato lo scope del componente con il metodo @Factory
(amenoché il componente sia stateless, nel qual caso viene usato il contesto EVENT
).
value
— specifica il nome della variabile di contesto. Se il metodo è un getter, di default è il nome della proprietà del JavaBean.
scope
— specifica lo scope che Seam dovrebbe associare al valore restituito. E' significativo solo per i metodi factory che restituiscono un valore.
autoCreate
— specifica che questo metodo factory dovrebbe automaticamente essere chiamato quando si chiama la variabile, anche se @In
non specifica create=true
.
Questa annotazione consente di iniettare un Log
:
L'ultima annotazione consente di iniettare un valore di un parametro di richiesta:
@RequestParameter
@RequestParameter("parameterName")
Specifica che un attributo di componente deve essere iniettato con il valore di un parametro di richiesta. Le conversioni del tipo base sono eseguite automaticamente.
value
— specifica il nome del parametro di richiesta. Di default è il nome dell'attributo del componente.
Queste annotazioni consentono al componente di reagire agli eventi del proprio ciclo di vita. Accadono sul metodo del componente. Possono essere solo una per ogni classe di componente.
@Create
@Create
Specifica che il metodo venga chiamato quando viene istanziata da Seam un'istanza del componente. Si noti che i metodi di creazioni sono supportati solo per JavaBeans e bean di sessione stateful.
@Destroy
@Destroy
Specifica che il metodo deve essere chiamato quando il contesto termina e le sue variabili vengono distrutte. Si noti che i metodi distruttori sono supportati solo per JavaBeans e bean di sessione stateful.
I metodi distruttori devono essere usati solo per la pulizia. Seam cattura, logga ed ignora (swallow) ogni eccezione che si propaga da un metodo distruttore.
@Observer
@Observer("somethingChanged")
Specifica che il metodo deve essere chiamato quando avviene un evento component-driven del tipo specificato.
@Observer(value="somethingChanged",create=false)
Specifica che il metodo venga chiamato quando accade un evento del tipo specificato, ma che non venga creata un'istanza se non esiste. Se un'istanza non esiste e create è false, l'evento non verrà osservato. Di default il valore di create è true.
Queste annotazioni forniscono una demarcazione dichiarativa della conversazione. Appaiono sui metodi dei componenti Seam, solitamente metodi action listener.
Ogni richiesta web ha un contesto di conversazione associato ad essa. La maggior parte di queste conversazioni finisce alla fine della richesta. Se si vuole che una conversazione si espanda lungo richieste multiple, si deve "promuovere" la conversazione corrente a conversazione long-running chiamando un metodo marcato con @Begin
.
@Begin
@Begin
Specifica che la conversazione long-running inizia quando questo metodo restuisce un esito non-null senza eccezioni.
@Begin(join=true)
Specifica che se una conversazione long-running è già in esecuzione, il contesto della conversazione viene semplicemente propagato.
@Begin(nested=true)
Specifica che se una conversazione ong-running è già in esecuzione, inizia un nuovo contesto di conversazione innestata. La conversazione innestata terminerà quando viene incontrato il successivo @End
, e verrà ripristinata la conversazione più esterna. E' perfettamente legale che esistano conversazioni innestate concorrenti nella stessa conversazione più esterna.
@Begin(pageflow="process definition name")
Specifica il nome della definizione di processo jBPM che definisce il pageflow per questa conversazione.
@Begin(flushMode=FlushModeType.MANUAL)
Specifica la modalità di flush di un qualsiasi contesto di persistenza gestito da Seam. flushMode=FlushModeType.MANUAL
supporta l'uso di conversazioni atomiche dove tutte le operazioni di scrittura vengono accodate nel contesto di conversazione fino ad una chiamata esplicita al metodo flush()
(che solitamente avviene alla fine della conversazione).
join
— determina il comportamento quando una conversazione long-running è già attiva. Se true
, il contesto viene propagato. Se false
, viene lanciata un'eccezione. Di default è false
. Quest'impostazione è ignorata quando è specificato nested=true
.
nested
— specifica che una conversazione innestata sia avviata se è già presente una conversazione long-running.
flushMode
— imposta la modalità flush di ogni sessione Hibernate gestita da Seam o contesto di persistenza JPA che vengono creati durante la conversazione.
pageflow
— un nome di definizione di processo jBPM deployato via org.jboss.seam.bpm.jbpm.pageflowDefinitions.
@End
@End
Specifica che una conversazione long-running termina quando questo metodo restituisce un esito non-null senza eccezioni.
beforeRedirect
— di default la conversazione non verrà effettivamente distrutta prima che avvenga un redirect. Impostando beforeRedirect=true
viene specificato che la conversazione debba essere distrutta alla fine della richiesta corrente, e che il redirect venga processato in un contesto di conversazione temporanea.
root
— di default terminare una conversazione innestata implica che venga tolta la conversazione dallo stack delle conversazioni e venga ripristinata la conversazione più esterna. root=true
specifica che la conversazione radice debba essere distrutta, e ciò distrugge effettivamente l'intero stack delle conversazioni. Se la conversazione non è innestata, la conversazione semplicemente finisce.
@StartTask
@StartTask
"Inizia" un task jBPM. Specifica che una conversazione long-running inizi quando questo metodo restituisce un esito non-null senza eccezione. Questa conversazione è associata ad un task jBPM specificato nel parametro della richiesta. Dentro il contesto di questa conversazione è definito anche il contesto del processo di business per l'istanza del processo di business dell'istanza task.
La TaskInstance
di jBPM sarà disponibile in una variabile di contesto di richiesta chiamato taskInstance
. La ProcessInstance
di jBPM sarà disponibile in una variabile di contesto di richiesta chiamata processInstance
. (Sicuramente questo oggetti sono disponibili per l'iniezione via @In
.)
taskIdParameter
— il nome del parametro di richiesta che mantiene l'id del task. Di default è "taskId"
, che è anche il default usato dal componente Seam JSF taskList
.
flushMode
— imposta la modalità flush di ogni sessione Hibernate gestita da Seam o contesto di persistenza JPA che vengono creati durante la conversazione.
@BeginTask
@BeginTask
Ripristina il lavoro su un task jBPM incompleto. Specifica che la conversazione long-running inizi quando questo metoto restituisce un esito non-null senza eccezioni. Questa conversazione è associata al task jBPM specificata nel parametro di richiesta. Dentro il contesto di questa conversazione, è definito anche un contesto di business process per l'istanza del processo di business dell'istanza task.
La org.jbpm.taskmgmt.exe.TaskInstance
jBPM sarà disponibile in una variabile di contesto richiesta chiamata taskInstance
. La org.jbpm.graph.exe.ProcessInstance
jBPM sarà disponibile in una variabile di contesto richiesta chiamata processInstance
.
taskIdParameter
— il nome del parametro di richiesta che mantiene l'id del task. Di default è "taskId"
, che è anche il default usato dal componente Seam JSF taskList
.
flushMode
— imposta la modalità flush di ogni sessione Hibernate gestita da Seam o contesto di persistenza JPA che vengono creati durante la conversazione.
@EndTask
@EndTask
"Termina" un task jBPM. Specifica che una conversazione long-running termina quando il metodo ritorna un esito non-null, e che il task corrente è completo. Lancia una transizione jBPM. La transizione lanciata sarà la transizione di default amenoché l'applicazione chiami Transition.setName()
sul componente predefinito chiamato transition
.
@EndTask(transition="transitionName")
Lancia la transizione jBPM data.
transition
— il nome della transizione jBPM da lanciare come trigger quando termina il task. Il default è la transizione di default.
beforeRedirect
— di default la conversazione non verrà effettivamente distrutta prima che avvenga un redirect. Impostando beforeRedirect=true
viene specificato che la conversazione debba essere distrutta alla fine della richiesta corrente, e che il redirect venga processato in un contesto di conversazione temporanea.
@CreateProcess
@CreateProcess(definition="process definition name")
Crea una nuova istanza di processo jBPM quando il metodo restituisce un esito non-null senza eccezione. L'oggetto ProcessInstance
sarà disponibile in una variabile di contesto chiamata processInstance
.
definition
— il nome di una definizione di processo jBPM deployata via org.jboss.seam.bpm.jbpm.processDefinitions
.
@ResumeProcess
@ResumeProcess(processIdParameter="processId")
Reinserisce lo scope di un'istanza esistente di processo jBPM quando il metodo ritorna un esisto non-null senza eccezione. L'oggetto ProcessInstance
sarà disponibile in una variabile di contesto chiamata processInstance
.
processIdParameter
— il nome del parametro di richiesta che che mantiene l'id di processo. Di default è "processId"
.
@Transition
@Transition("cancel")
Marca un metodo come segnalante una transizione nell'istanza del processo jBPM corrente quando il metodo restituisce un risultato non-null.
Seam fornisce un'annotazione che consente di forza un rollback di una transazione JTA per certi esiti action listener.
@Transactional
@Transactional
Specifica che un componente JavaBean debba avere un comportamento transazionale simile al comportamenteo di default di un componente session bean, cioèle invocazioni di metodo deve avere luogo in una transazione, e se non esiste alcuna transazione quando viene chiamato il metodo, verrà iniziata una transazione solo per quel metodo. Quest'annotazione può essere applicata o a livello di classe o di metodo.
Non usare quest'annotazione in componenti EJB 3.0, usare @TransactionAttribute
!
@ApplicationException
@ApplicationException
Sinonimo di javax.ejb.ApplicationException, per l'uso in un ambiente per Java EE 5. Si applica ad un'eccezione per denotare che è un'eccezione di applicazione e deve essere riportata direttamente al client (cioè, unwrapped).
Non usare quest'annotazione in componenti EJB 3.0, usare invece @javax.ejb.ApplicationException
.
rollback
— di default false
, se true
quest'eccezione deve impostare la transazione al solo roolback.
end
— di default false
, se true
quest'eccezione deve terminare la conversazione long-running corrente.
@Interceptors
@Interceptors({DVDInterceptor, CDInterceptor})
Sinonimo di javax.interceptors.Interceptors, per l'uso in ambiente pre Java EE 5. Si noti che può essere usato solo come meta-annotazione. Dichiara una lista ordinata di interceptor per una classe o un metodo.
Non usare queste annotazioni su componenti EJB 3.0, usare invece @javax.interceptor.Interceptors
.
Queste annotazioni sono utili per i componenti Seam JavaBean. Se si usano i componenti EJB 3.0, occorre usare l'annotazione standard Java EE 5.
Queste annotazioni consentono di specificare come Seam debba gestire un'eccezione che si propaga fuori da un componente Seam.
@Redirect
@Redirect(viewId="error.jsp")
Specifica che un'eccezione annotata causi un redirect del browser verso uno specifico id di vista.
viewId
— specifica che l'di della vista JSF a cui fare il redirect. Si può usare EL.
message
— un messaggio da mostrare, di default è il messaggio d'eccezione.
end
— specifica che la conversazione long-running debba terminare, di default è false
.
@HttpError
@HttpError(errorCode=404)
Specifica che l'eccezione annotata debba causare l'invio di un errore HTTP.
errorCode
— il codice d'errore HTTP, di default è 500
.
message
— un messaggio deve essere inviato come errore HTTP, di default è il messaggio d'eccezione.
end
— specifica che la conversazione long-running debba terminare, di default è false
.
Seam Remoting richiede che l'interfaccia locale di un session bean sia annotato con la seguente annotazione:
@WebRemote
@WebRemote(exclude="path.to.exclude")
Indica che il metodo annotato può essere chiamato da JavaScript lato client. La proprietà exclude
è opzionale e consente agli oggetti di essere esclusi dal grafo dell'oggetto dei risultati (vedere il capitolo Capitolo 25, Remoting per maggiori dettagli).
Nelle classi interceptor di Seam appaiono le seguenti annotazioni.
Si prega di fare riferimento alla documentazione della specifica EJB 3.0 per informazioni sulle annotazioni richieste per la definizione di interceptor EJB.
@Interceptor
@Interceptor(stateless=true)
Specifica che quest'interceptor è stateless e Seam può ottimizzare la replicazione.
@Interceptor(type=CLIENT)
Specifica che quest'interceptor è un interceptor "lato client" che viene chiamato prima del container EJB.
@Interceptor(around={SomeInterceptor.class, OtherInterceptor.class})
Specifica che quest'interceptor è posizionato più in alto nello stack rispetto agli interceptor dati.
@Interceptor(within={SomeInterceptor.class, OtherInterceptor.class})
Specifica che quest'interceptor è posizionato più in profondità nello stack rispetto agli interceptor dati.
Le seguenti annotazioni vengono usate per dichiarare un metodo asincrono, per esempio:
@Asynchronous public void scheduleAlert(Alert alert, @Expiration Date date) { ... }
@Asynchronous public Timer scheduleAlerts(Alert alert,
@Expiration Date date,
@IntervalDuration long interval) { ... }
@Asynchronous
@Asynchronous
Specifica che la chiamata al metodo viene processata asicronicamente.
@Duration
@Duration
Specifica che un parametro della chiamata asincrona è la durata prima che la chiamata venga processata (o la prima processata per le chiamate ricorrenti).
@Expiration
@Expiration
Specifica che un parametro della chiamata asincrona è la dataora prima che la chiamata venga processata (o la prima processata per le chiamate ricorrenti).
@IntervalDuration
@IntervalDuration
Specifica che una chiamata di un metodo asincrono si ripete ed il parametro annotato è la durata tra le ricorrenze.
Queste annotazioni rendono più facile lavorare con JSF.
@Converter
Consente al componente Seam di agire come convertitore JSF. La classe annotata deve essere un componente Seam e deve implementare javax.faces.convert.Converter
.
id
— l'id del convertitore JSF. Di default è il nome del componente.
forClass
— se specificato, registra questo componente come convertitore di default per un tipo.
@Validator
Consente ad un componente Seam di agire come validatore JSF. La classe annotata deve essere un componente Seam, e deve implementare javax.faces.validator.Validator
.
id
— l'id del validatore JSF. Di default è il nome del componente.
Le seguenti annotazioni facilitano l'implementazione di liste cliccabili con dietro un bean di sessione stateful. Appaiono sugli attributi.
@DataModel
@DataModel("variableName")
Fa l'outjection di una proprietà di tipo List
, Map
, Set
o Object[]
come un DataModel
JSF nello scope del componente proprietario (o nello scope EVENT
se il componente proprietario è STATELESS
). In caso di Map
, ogni riga di DataModel
è una Map.Entry
.
value
— nome della variabile di contesto della conversazione. Di default è il nome dell'attributo.
scope
— se scope=ScopeType.PAGE
è specificato esplicitamente, il DataModel
verrà mantenuto nel contesto PAGE
.
@DataModelSelection
@DataModelSelection
Inietta il valore selezionato dal DataModel
JSF (questo è l'elemento della collezione sottostante, o valore di mappa). Se è definito solo un attributo @DataModel
per un componente, verrà iniettato il valore selezionato da quel DataModel
. Altrimenti, il nome del componente di ciascun DataModel
dovrà essere specificato nell'attributo di valore per ogni @DataModelSelection
.
Se sul @DataModel
associato è specificato lo scope PAGE
, allora in aggiunta alla DataModel Selection iniettata, verrà iniettato anche il DataModel associato. In questo caso, se la proprietà annotata con @DataModel
è un metodo getter, allora il metodo setter per la proprietà deve essere parte della Business API del componente Seam che lo contiene.
value
— nome della variabile di contesto della conversazione. Non occorre se c'è esattamente un @DataModel
nel componente.
@DataModelSelectionIndex
@DataModelSelectionIndex
Espone l'indice della selezione del DataModel
JSF come un attributo del componente (questo è il numero riga della collezione sottostante, o la chiave della mappa). Se per un componente è definito solo un attributo @DataModel
, verrà iniettato il valore selezionato da quel DataModel
. Altrimenti il nome del componente di ciascun @DataModel
deve essere specificato nell'attributo valore per ogni @DataModelSelectionIndex
.
value
— nome della variabile di contesto della conversazione. Non occorre se c'è esattamente un @DataModel
nel componente.
Queste meta-annotazioni rendono possibile implementare una funzionalità simile in @DataModel
e @DataModelSelection
per altre strutture di dati oltre alla lista.
Questa annotazione fornisce un meccaniscmo per dichiarare informazioni riguardanti un set di componente impacchettati assieme. Può essere applicata a qualsiasi pacchetto Java.
@Namespace
@Namespace(value="http://jboss.com/products/seam/example/seampay")
Specifica che i componenti nel pacchetto corrente sono associati al namespace dato. Il namespace dichiarato deve essere usato come namespace XML in un file components.xml
per semplificare la configurazione dell'applicazione.
@Namespace(value="http://jboss.com/products/seam/core", prefix="org.jboss.seam.core")
Specifica un namespace da associare al pacchetto dato. In aggiunta, specifica un prefisso al nome del componente da applicare ai nomi componenti specificati nel file XML. Per esempio, un elemento XML chiamato init
, associato a questo namespace, dovrebbe fare riferimento al componente chiamato org.jboss.seam.core.init
.
Queste annotazioni consentono di integrare i componenti Seam con un servlet container.
@Filter
Si usi come filtro servlet il componente Seam (che implementa javax.servlet.Filter
) annotato con @Filter
. Esso verrà eseguito come filtro master di Seam.
@Filter(around={"seamComponent", "otherSeamComponent"})
Specifica che questo filtro è posizionato più in alto nello stack rispetto agli altri filtri.
@Filter(within={"seamComponent", "otherSeamComponent"})
Specifica che questo filtro è posizionato più in basso nello stack rispetto agli altri filtri.