# Language it-IT translations for PACKAGE package.
# Automatically generated, 2008.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
"POT-Creation-Date: 2009-05-29 06:39+0000\n"
"PO-Revision-Date: 2009-06-25 16:01+0100\n"
"Last-Translator: Nicola Benaglia <nico.benaz@gmail.com>\n"
"Language-Team: none\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

#. Tag: title
#: Events.xml:5
#, no-c-format
msgid "Events, interceptors and exception handling"
msgstr "Eventi, interceptor e gestione delle eccezioni"

#. Tag: para
#: Events.xml:7
#, no-c-format
msgid "Complementing the contextual component model, there are two further basic concepts that facilitate the extreme loose-coupling that is the distinctive feature of Seam applications. The first is a strong event model where events may be mapped to event listeners via JSF-like method binding expressions. The second is the pervasive use of annotations and interceptors to apply cross-cutting concerns to components which implement business logic."
msgstr "A complemento del modello contestuale a componenti, ci sono due ulteriori concetti base che facilitano il disaccoppiamento estremo, caratteristica distintiva delle applicazioni Seam. Il primo è un forte modello a eventi in cui gli eventi possono essere mappati su degli event listener attraverso espressioni di method binding stile JSF. Il secondo è l'uso pervasivo di annotazioni ed interceptor per applicare concern incrociati ai componenti che implementano la business logic."

#. Tag: title
#: Events.xml:17
#, no-c-format
msgid "Seam events"
msgstr "Eventi di Seam"

#. Tag: para
#: Events.xml:18
#, no-c-format
msgid "The Seam component model was developed for use with <emphasis>event-driven applications</emphasis>, specifically to enable the development of fine-grained, loosely-coupled components in a fine-grained eventing model. Events in Seam come in several types, most of which we have already seen:"
msgstr "Il modello a componenti di Seam è stato sviluppato per l'uso con <emphasis>applicazioni event-driven</emphasis>, specificatamente per consentire lo sviluppo di componenti a granularità fine, disaccoppiati in un modello a eventi a granularità fine. Gli eventi in Seam avvengono in parecchi modi, la maggior parte dei quali è già stata vista:"

#. Tag: para
#: Events.xml:27
#, no-c-format
msgid "JSF events"
msgstr "Eventi JSF"

#. Tag: para
#: Events.xml:30
#, no-c-format
msgid "jBPM transition events"
msgstr "Eventi di transizione jBPM"

#. Tag: para
#: Events.xml:33
#, no-c-format
msgid "Seam page actions"
msgstr "Azioni di pagina Seam"

#. Tag: para
#: Events.xml:36
#, no-c-format
msgid "Seam component-driven events"
msgstr "Eventi guidati da componenti Seam"

#. Tag: para
#: Events.xml:39
#, no-c-format
msgid "Seam contextual events"
msgstr "Eventi contestuali Seam"

#. Tag: para
#: Events.xml:43
#, no-c-format
msgid "All of these various kinds of events are mapped to Seam components via JSF EL method binding expressions. For a JSF event, this is defined in the JSF template:"
msgstr "Tutti questi vari tipi di eventi sono mappati sui componenti Seam tramite espressioni di method binding JSF EL. Per un evento JSF, questo è definito nel template JSF:"

#. Tag: programlisting
#: Events.xml:48
#, no-c-format
msgid "<![CDATA[<h:commandButton value=\"Click me!\" action=\"#{helloWorld.sayHello}\"/>]]>"
msgstr "<![CDATA[<h:commandButton value=\"Click me!\" action=\"#{helloWorld.sayHello}\"/>]]>"

#. Tag: para
#: Events.xml:52
#, no-c-format
msgid "For a jBPM transition event, it is specified in the jBPM process definition or pageflow definition:"
msgstr "Per un evento di transizione jBPM, è specificato nella definizione di processo o nella definizione di pageflow:"

#. Tag: programlisting
#: Events.xml:57
#, no-c-format
msgid ""
"<![CDATA[<start-page name=\"hello\" view-id=\"/hello.jsp\">\n"
"    <transition to=\"hello\">\n"
"        <action expression=\"#{helloWorld.sayHello}\"/>\n"
"    </transition>\n"
"</start-page>]]>"
msgstr ""
"<![CDATA[<start-page name=\"hello\" view-id=\"/hello.jsp\">\n"
"    <transition to=\"hello\">\n"
"        <action expression=\"#{helloWorld.sayHello}\"/>\n"
"    </transition>\n"
"</start-page>]]>"

#. Tag: para
#: Events.xml:59
#, no-c-format
msgid "You can find out more information about JSF events and jBPM events elsewhere. Let's concentrate for now upon the two additional kinds of events defined by Seam."
msgstr "In altri luoghi si possono trovare maggiori informazioni sugli eventi JSF e sugli eventi jBPM. Concentriamoci ora sui due tipi di evento aggiuntivi definiti da Seam."

#. Tag: title
#: Events.xml:66
#, no-c-format
msgid "Page actions"
msgstr "Azioni di pagina"

#. Tag: para
#: Events.xml:68
#, no-c-format
msgid "A Seam page action is an event that occurs just before we render a page. We declare page actions in <literal>WEB-INF/pages.xml</literal>. We can define a page action for either a particular JSF view id:"
msgstr "Un'azione di pagina Seam è un evento che avviene appena prima che la pagina venga renderizzata. Si dichiarano le azioni di pagina in <literal>WEB-INF/pages.xml</literal>.  Si può definire un'azione di pagina anche per un particolare view-id JSF:"

#. Tag: programlisting
#: Events.xml:74
#, no-c-format
msgid ""
"<![CDATA[<pages>\n"
"    <page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"/>\n"
"</pages>]]>"
msgstr ""
"<![CDATA[<pages>\n"
"    <page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"/>\n"
"</pages>]]>"

#. Tag: para
#: Events.xml:76
#, no-c-format
msgid "Or we can use a <literal>*</literal> wildcard as a suffix to the <literal>view-id</literal> to specify an action that applies to all view ids that match the pattern:"
msgstr "Oppure si può usare il wildcard <literal>*</literal> come suffisso a <literal>view-id</literal> per specificare un'azione che si applica a tutti i view-id che corrispondono al pattern:"

#. Tag: programlisting
#: Events.xml:82
#, no-c-format
msgid ""
"<![CDATA[<pages>\n"
"    <page view-id=\"/hello/*\" action=\"#{helloWorld.sayHello}\"/>\n"
"</pages>]]>"
msgstr ""
"<![CDATA[<pages>\n"
"    <page view-id=\"/hello/*\" action=\"#{helloWorld.sayHello}\"/>\n"
"</pages>]]>"

#. Tag: para
#: Events.xml:84
#, no-c-format
msgid "Keep in mind that if the <literal>&lt;page&gt;</literal> element is defined in a fine-grained page descriptor, the <literal>view-id</literal> attribute can be left off since it is implied."
msgstr "Si tenga presente che se l'elemento <literal>&lt;page&gt;</literal> è definito in un descrittore di pagina a granularità fine, l'attributo <literal>view-id</literal> può essere tralasciato poiché implicito."

#. Tag: para
#: Events.xml:90
#, no-c-format
msgid "If multiple wildcarded page actions match the current view-id, Seam will call all the actions, in order of least-specific to most-specific."
msgstr "Se più azioni di pagina con wildcard corrispondono al corrente view-id, Seam chiamerà tutte le azioni, nell'ordine dal meno al più specifico."

#. Tag: para
#: Events.xml:95
#, no-c-format
msgid "The page action method can return a JSF outcome. If the outcome is non-null, Seam will use the defined navigation rules to navigate to a view."
msgstr "Il metodo di azione di pagine può restituire un esito JSF. Se l'esito è non-null, Seam userà le regole di navigazione definite per andare verso una vista."

#. Tag: para
#: Events.xml:100
#, no-c-format
msgid "Furthermore, the view id mentioned in the <literal>&lt;page&gt;</literal> element need not correspond to a real JSP or Facelets page! So, we can reproduce the functionality of a traditional action-oriented framework like Struts or WebWork using page actions. This is quite useful if you want to do complex things in response to non-faces requests (for example, HTTP GET requests)."
msgstr "Inoltre l'id della vista menzionato nell'elemento <literal>&lt;page&gt;</literal> non occorre che corrisponda alla vera pagina JSP o Facelets! Quindi si può riprodurre la funzionalità di un tradizionale framework action-oriented come Struts o WebWork usando le azioni di pagina. Questo è abbastanza utile se si vogliono fare cose complesse in risposta a richieste non-faces (per esempio, richieste HTTP GET)."

#. Tag: para
#: Events.xml:109
#, no-c-format
msgid "Multiple or conditional page actions my be specified using the <literal>&lt;action&gt;</literal> tag:"
msgstr "Azioni di pagina multiple o condizionali possono essere specificate usando il tag <literal>&lt;action&gt;</literal>:"

#. Tag: programlisting
#: Events.xml:114
#, no-c-format
msgid ""
"<![CDATA[<pages>\n"
"    <page view-id=\"/hello.jsp\">\n"
"        <action execute=\"#{helloWorld.sayHello}\" if=\"#{not validation.failed}\"/>\n"
"        <action execute=\"#{hitCount.increment}\"/>\n"
"    </page>\n"
"</pages>]]>"
msgstr ""
"<![CDATA[<pages>\n"
"    <page view-id=\"/hello.jsp\">\n"
"        <action execute=\"#{helloWorld.sayHello}\" if=\"#{not validation.failed}\"/>\n"
"        <action execute=\"#{hitCount.increment}\"/>\n"
"    </page>\n"
"</pages>]]>"

#. Tag: para
#: Events.xml:116
#, no-c-format
msgid "Page actions are executed on both an initial (non-faces) request and a postback (faces) request. If you are using the page action to load data, this operation may conflict with the standard JSF action(s) being executed on a postback. One way to disable the page action is to setup a condition that resolves to true only on an initial request."
msgstr "Le azioni di pagina vengono eseguite sia su una richiesta iniziale (non-faces) sia su una richiesta di postback (faces). Se si usa l'azione di pagina per caricare i dati, quest'operazione può confliggere con le azioni standard JSF che vengono eseguite su un postback. Un modo per disabilitare l'azione di pagina è di impostare una condizione che risolva a true solo su una richiesta iniziale."

#. Tag: programlisting
#: Events.xml:123
#, no-c-format
msgid ""
"<![CDATA[<pages>\n"
"    <page view-id=\"/dashboard.xhtml\">\n"
"        <action execute=\"#{dashboard.loadData}\"\n"
"            if=\"#{not facesContext.renderKit.responseStateManager.isPostback(facesContext)}\"/>\n"
"    </page>\n"
"</pages>]]>"
msgstr ""
"<![CDATA[<pages>\n"
"    <page view-id=\"/dashboard.xhtml\">\n"
"        <action execute=\"#{dashboard.loadData}\"\n"
"            if=\"#{not facesContext.renderKit.responseStateManager.isPostback(facesContext)}\"/>\n"
"    </page>\n"
"</pages>]]>"

#. Tag: para
#: Events.xml:125
#, no-c-format
msgid "This condition consults the <literal>ResponseStateManager#isPostback(FacesContext)</literal> to determine if the request is a postback. The ResponseStateManager is accessed using <literal>FacesContext.getCurrentInstance().getRenderKit().getResponseStateManager()</literal>."
msgstr "Questa condizione consulta <literal>ResponseStateManager#isPostback(FacesContext)</literal>per determinare se la richiesta è un postback. Il ResponseStateManager viene acceduto usando <literal>FacesContext.getCurrentInstance().getRenderKit().getResponseStateManager()</literal>."

#. Tag: para
#: Events.xml:131
#, no-c-format
msgid "To save you from the verbosity of JSF's API, Seam offers a built-in condition that allows you to accomplish the same result with a heck of a lot less typing. You can disable a page action on postback by simply setting the <literal>on-postback</literal> to <literal>false</literal>:"
msgstr "Per risparmiare dalla verbosità dell'API di JSF, Seam offre una condizione predefinita che consente di raggiungere lo stesso risultato con molto meno codice scritto. Si può disabilitare l'azione di pagina su un postback semplicemente impostando il <literal>on-postback</literal> a <literal>false</literal>:"

#. Tag: programlisting
#: Events.xml:137
#, no-c-format
msgid ""
"<![CDATA[<pages>\n"
"    <page view-id=\"/dashboard.xhtml\">\n"
"        <action execute=\"#{dashboard.loadData}\" on-postback=\"false\"/>\n"
"    </page>\n"
"</pages>]]>"
msgstr ""
"<![CDATA[<pages>\n"
"    <page view-id=\"/dashboard.xhtml\">\n"
"        <action execute=\"#{dashboard.loadData}\" on-postback=\"false\"/>\n"
"    </page>\n"
"</pages>]]>"

#. Tag: para
#: Events.xml:139
#, no-c-format
msgid "For backwards compatibility reasons, the default value of the <literal>on-postback</literal> attribute is true, though likely you will end up using the opposite setting more often."
msgstr "Per ragioni di retro-compatibilità, il valore di default dell'attributo <literal>on-postback</literal> è true, sebbene la maggior parte delle volte si usa l'impostazione contraria."

#. Tag: title
#: Events.xml:147
#, no-c-format
msgid "Page parameters"
msgstr "Parametri di pagina"

#. Tag: para
#: Events.xml:149
#, no-c-format
msgid "A JSF faces request (a form submission) encapsulates both an \"action\" (a method binding) and \"parameters\" (input value bindings). A page action might also needs parameters!"
msgstr "Una richiesta JSF faces (sottomissione di una form) incapsula sia un'\"azione\" (un metodo di binding) sia \"parametri\" (valore di binding di input). Un'azione di pagina può anche avere bisogno di parametri!"

#. Tag: para
#: Events.xml:155
#, no-c-format
msgid "Since GET requests are bookmarkable, page parameters are passed as human-readable request parameters. (Unlike JSF form inputs, which are anything but!)"
msgstr "Poiché le richieste GET sono memorizzabili come segnalibro, i parametri di pagine vengono passati come parametri di richiesta human-readable. (A differenza degli input di form JSF!)"

#. Tag: para
#: Events.xml:161
#, no-c-format
msgid "You can use page parameters with or without an action method."
msgstr "Si possono usare i parametri di pagina con o senza metodo d'azione."

#. Tag: title
#: Events.xml:166
#, no-c-format
msgid "Mapping request parameters to the model"
msgstr "Mappatura dei parametri di richiesta sul modello"

#. Tag: para
#: Events.xml:168
#, no-c-format
msgid "Seam lets us provide a value binding that maps a named request parameter to an attribute of a model object."
msgstr "Seam lascia fornire un valore di binding che mappa un parametro di richiesta su un attributo di un oggetto del modello."

#. Tag: programlisting
#: Events.xml:173
#, no-c-format
msgid ""
"<![CDATA[<pages>\n"
"      <page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\">\n"
"          <param name=\"firstName\" value=\"#{person.firstName}\"/>\n"
"          <param name=\"lastName\" value=\"#{person.lastName}\"/>\n"
"      </page>\n"
"  </pages>]]>"
msgstr ""
"<![CDATA[<pages>\n"
"      <page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\">\n"
"          <param name=\"firstName\" value=\"#{person.firstName}\"/>\n"
"          <param name=\"lastName\" value=\"#{person.lastName}\"/>\n"
"      </page>\n"
"  </pages>]]>"

#. Tag: para
#: Events.xml:175
#, no-c-format
msgid "The <literal>&lt;param&gt;</literal> declaration is bidirectional, just like a value binding for a JSF input:"
msgstr "La dichiarazione <literal>&lt;param&gt;</literal> è bidirezionale, proprio come un valore di binding per un input JSF:"

#. Tag: para
#: Events.xml:182
#, no-c-format
msgid "When a non-faces (GET) request for the view id occurs, Seam sets the value of the named request parameter onto the model object, after performing appropriate type conversions."
msgstr "Quando avviene una richiesta non-faces (GET) per un view-id, Seam imposta il valore del parametro di richiesta sull'oggetto del modello, dopo aver operato le dovute conversioni sul tipo."

#. Tag: para
#: Events.xml:189
#, no-c-format
msgid "Any <literal>&lt;s:link&gt;</literal> or <literal>&lt;s:button&gt;</literal> transparently includes the request parameter. The value of the parameter is determined by evaluating the value binding during the render phase (when the <literal>&lt;s:link&gt;</literal> is rendered)."
msgstr "Qualsiasi <literal>&lt;s:link&gt;</literal> o <literal>&lt;s:button&gt;</literal> include in modo trasparente il parametro di richiesta. Il valore del parametro viene determinato valutando il valore di binding durante la fase di render (quando <literal>&lt;s:link&gt;</literal> viene renderizzato)."

#. Tag: para
#: Events.xml:197
#, no-c-format
msgid "Any navigation rule with a <literal>&lt;redirect/&gt;</literal> to the view id transparently includes the request parameter. The value of the parameter is determined by evaluating the value binding at the end of the invoke application phase."
msgstr "Qualsiasi regola di navigazione con un <literal>&lt;redirect/&gt;</literal> nell'id vista include in modo trasparente il parametro di richiesta. Il valore del parametro viene determinato valutando il valore di binding alla fine della fase invoke application."

#. Tag: para
#: Events.xml:205
#, no-c-format
msgid "The value is transparently propagated with any JSF form submission for the page with the given view id. This means that view parameters behave like <literal>PAGE</literal>-scoped context variables for faces requests."
msgstr "Il valore viene propagato in modo trasparente con qualsiasi sottomissione di form JSF per la pagina con il dato id. Questo significa che i parametri di vista si comportano per richieste faces come variabili di contesto con scope <literal>PAGE</literal>."

#. Tag: para
#: Events.xml:214
#, no-c-format
msgid "The essential idea behind all this is that <emphasis>however</emphasis> we get from any other page to <literal>/hello.jsp</literal> (or from <literal>/hello.jsp</literal> back to <literal>/hello.jsp</literal>), the value of the model attribute referred to in the value binding is \"remembered\", without the need for a conversation (or other server-side state)."
msgstr "L'idea essenziale dietro a tutto questo è che <emphasis>comunque</emphasis> si giunge da qualsiasi altra pagina a <literal>/hello.jsp</literal> (o da <literal>/hello.jsp</literal> indietro a <literal>/hello.jsp</literal>), il valore dell'attributo del modello riferito al valore di binding viene \"ricordato\" senza il bisogno di una conversazione (o altro stato lato server)."

#. Tag: title
#: Events.xml:227
#, no-c-format
msgid "Propagating request parameters"
msgstr "Parametri di richiesta che si propagano"

#. Tag: para
#: Events.xml:229
#, no-c-format
msgid "If just the <literal>name</literal> attribute is specified then the request parameter is propagated using the <literal>PAGE</literal> context (it isn't mapped to model property)."
msgstr "Se viene specificato solo l'attributo <literal>name</literal> allora il parametro di richiesta viene propagato usando il contesto <literal>PAGE</literal> (non viene mappato alla proprietà del modello)."

#. Tag: programlisting
#: Events.xml:235
#, no-c-format
msgid ""
"<![CDATA[<pages>\n"
"      <page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\">\n"
"          <param name=\"firstName\" />\n"
"          <param name=\"lastName\" />\n"
"      </page>\n"
"  </pages>]]>"
msgstr ""
"<![CDATA[<pages>\n"
"      <page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\">\n"
"          <param name=\"firstName\" />\n"
"          <param name=\"lastName\" />\n"
"      </page>\n"
"  </pages>]]>"

#. Tag: para
#: Events.xml:238
#, no-c-format
msgid "Propagation of page parameters is especially useful if you want to build multi-layer master-detail CRUD pages. You can use it to \"remember\" which view you were previously on (e.g. when pressing the Save button), and which entity you were editing."
msgstr "La propagazione dei parametri di pagina è utile in particolare se si vuole costruire pagine CRUD con più livelli master-detail. Si può usare per \"ricordare\" quale vista c'era precedentemente (es. quando si preme il pulsante Salva) e quale entity si stava modificando."

#. Tag: para
#: Events.xml:245
#, no-c-format
msgid "Any <literal>&lt;s:link&gt;</literal> or <literal>&lt;s:button&gt;</literal> transparently propagates the request parameter if that parameter is listed as a page parameter for the view."
msgstr "Qualsiasi <literal>&lt;s:link&gt;</literal> o <literal>&lt;s:button&gt;</literal> propaga in modo trasparente il parametro di richiesta se tale parametro è elencato come parametro di pagina per la vista."

#. Tag: para
#: Events.xml:252
#, no-c-format
msgid "The value is transparently propagated with any JSF form submission for the page with the given view id. (This means that view parameters behave like <literal>PAGE</literal>-scoped context variables for faces requests."
msgstr "Il valore viene propagato in modo trasparente con la sottomissione della form JSF per la pagina con il dato id vista. (Questo significa che i parametri si comportano come variabili di contesto con scope <literal>PAGE</literal> per le richieste faces.)"

#. Tag: para
#: Events.xml:261
#, no-c-format
msgid "This all sounds pretty complex, and you're probably wondering if such an exotic construct is really worth the effort. Actually, the idea is very natural once you \"get it\". It is definitely worth taking the time to understand this stuff. Page parameters are the most elegant way to propagate state across a non-faces request. They are especially cool for problems like search screens with bookmarkable results pages, where we would like to be able to write our application code to handle both POST and GET requests with the same code. Page parameters eliminate repetitive listing of request parameters in the view definition and make redirects much easier to code."
msgstr "Tutto questo sembra abbastanza complesso e probabilmente ci si starà chiedendo se un tale costrutto esotico ne valga lo sforzo. In verità l'idea è molto naturale appena ci si abitua. Vale la pena impiegare del tempo per capire questo concetto. I parametri di pagina sono il modo più elegante per propagare lo stato lungo richieste non-faces. In particolare sono comodi per problemi quali schermate di ricerca con pagine di risultato memorizzabili, dove si vuole essere in grado di scrivere il codice applicativo per gestire sia richieste POST sia GET con lo stesso codice. I parametri di pagina eliminano la lista ripetitiva dei parametri di richiesta nella definizione della vista e rendono molto facile la codifica dei redirect."

#. Tag: title
#: Events.xml:277
#, no-c-format
msgid "URL rewriting with page parameters"
msgstr "Riscrittura URL con parametri di pagina"

#. Tag: para
#: Events.xml:278
#, no-c-format
msgid "Rewriting occurs based on rewrite patterns found for views in <literal>pages.xml</literal>. Seam URL rewriting does both incoming and outgoing URL rewriting based on the same pattern. Here's a simple pattern:"
msgstr "La riscrittura avviene in base ai pattern di riscrittura trovati per le viste in <literal>pages.xml</literal>. La riscrittura degli URL di Seam esegue sia la riscrittura dell'URL in entrata sia in uscita basandosi sullo stesso pattern. Ecco un esempio di pattern:"

#. Tag: programlisting
#: Events.xml:285
#, no-c-format
msgid ""
"<![CDATA[\n"
"<page view-id=\"/home.xhtml\">\n"
"    <rewrite pattern=\"/home\" />\n"
"</page>\n"
"]]>"
msgstr ""
"<![CDATA[\n"
"<page view-id=\"/home.xhtml\">\n"
"    <rewrite pattern=\"/home\" />\n"
"</page>\n"
"]]>"

#. Tag: para
#: Events.xml:287
#, no-c-format
msgid "In this case, any incoming request for <literal>/home</literal> will be sent to <literal>/home.xhtml</literal>. More interestingly, any link generated that would normally point to <literal>/home.seam</literal> will instead be rewritten as <literal>/home</literal>. Rewrite patterns only match the portion of the URL before the query parameters. So, <literal>/home.seam?conversationId=13</literal> and <literal>/home.seam?color=red</literal> will both be matched by this rewrite rule."
msgstr "In questo caso, qualsiasi richiesta in ingresso per <literal>/home</literal> verrà inviata a <literal>/home.xhtml</literal>. Più interessante, qualsiasi link generato che normalmente punterebbe a <literal>/home.seam</literal> verrà invece riscritto come <literal>/home</literal>. I pattern di riscrittura corrispondono solo alla porzione di URL prima dei parametri di interrogazione. Quindi, <literal>/home.seam?conversationId=13</literal> e <literal>/home.seam?color=red</literal> corrispondono entrambi in questa regola di riscrittura."

#. Tag: para
#: Events.xml:297
#, no-c-format
msgid "Rewrite rules can take these query paramters into consideration, as shown with the following rules."
msgstr "Le regole di riscrittura possono prendere in considerazione dei parametri di interrogazione, come mostrato con le seguenti regole."

#. Tag: programlisting
#: Events.xml:300
#, no-c-format
msgid ""
"<![CDATA[\n"
"<page view-id=\"/home.xhtml\">\n"
"    <rewrite pattern=\"/home/{color}\" />\n"
"    <rewrite pattern=\"/home\" />\n"
"</page>\n"
"]]>"
msgstr ""
"<![CDATA[\n"
"<page view-id=\"/home.xhtml\">\n"
"    <rewrite pattern=\"/home/{color}\" />\n"
"    <rewrite pattern=\"/home\" />\n"
"</page>\n"
"]]>"

#. Tag: para
#: Events.xml:302
#, no-c-format
msgid "In this case, an incoming request for <literal>/home/red</literal> will be served as if it were a request for <literal>/home.seam?color=red</literal>. Similarly, if color is a page parameter an outgoing URL that would normally show as <literal>/home.seam?color=blue</literal> would instead be output as <literal>/home/blue</literal>. Rules are processed in order, so it is important to list more specific rules before more general rules."
msgstr "In questo caso, una richiesta in ingresso per <literal>/home/red</literal> verrà servita come se fosse una richiesta per <literal>/home.seam?color=red</literal>. In modo analogo se il colore è un parametro di pagina, un URL in uscita che normalmente sarebbe mostrato come <literal>/home.seam?color=blue</literal> verrebbe invece mostrato come <literal>/home/blue</literal>. Le regole vengono processate in ordine, quindi è importante elencare le regole più specifiche prima delle regole generali."

#. Tag: para
#: Events.xml:312
#, no-c-format
msgid "Default Seam query parameters can also be mapped using URL rewriting, allowing for another option for hiding Seam's fingerprints. In the following example, <literal>/search.seam?conversationId=13</literal> would be written as <literal>/search-13</literal>."
msgstr "I parametri di default di ricerca di Seam possono essere mappati usando la riscrittura d'URL, consentendo ad un'altra opzione di nascondere il fingerprint di Seam. In quest'esempio, <literal>/search.seam?conversationId=13</literal> verrebbe riscritto come <literal>/search-13</literal>."

#. Tag: programlisting
#: Events.xml:317
#, no-c-format
msgid ""
"<![CDATA[\n"
"<page view-id=\"/search.xhtml\">\n"
"    <rewrite pattern=\"/search-{conversationId}\" />\n"
"    <rewrite pattern=\"/search\" />\n"
"</page>\n"
"]]>"
msgstr ""
"<![CDATA[\n"
"<page view-id=\"/search.xhtml\">\n"
"    <rewrite pattern=\"/search-{conversationId}\" />\n"
"    <rewrite pattern=\"/search\" />\n"
"</page>\n"
"]]>"

#. Tag: para
#: Events.xml:319
#, no-c-format
msgid "Seam URL rewriting provides simple, bidirectional rewriting on a per-view basis. For more complex rewriting rules that cover non-seam components, Seam applications can continue to use the <literal>org.tuckey URLRewriteFilter </literal>or apply rewriting rules at the web server."
msgstr "La riscrittura dell'URL di Seam fornisce una riscrittura semplice e bidirezionale su una base per-vista. Per regole di riscrittura più complesse che coprano componenti non-seam, le applicazioni Seam possono continuare ad usare il <literal>org.tuckey URLRewriteFilter</literal> o applicare regole di riscrittura nel server web."

#. Tag: para
#: Events.xml:325
#, no-c-format
msgid "URL rewriting requires the Seam rewrite filter to be enable. Rewrite filter configuration is discussed in <xref linkend=\"configuration.filters.rewrite\"/>."
msgstr "La riscrittura dell'URL richiede che il filtro di riscrittura Seam sia abilitato. La configurazione del filtro è discussa in <xref linkend=\"configuration.filters.rewrite\"/>."

#. Tag: title
#: Events.xml:333
#, no-c-format
msgid "Conversion and Validation"
msgstr "Conversione e validazione"

#. Tag: para
#: Events.xml:335
#, no-c-format
msgid "You can specify a JSF converter for complex model propreties:"
msgstr "Si può specificare un convertitore JSF per proprietà di modelli complessi:"

#. Tag: programlisting
#: Events.xml:339
#, no-c-format
msgid ""
"<![CDATA[<pages>\n"
"   <page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}\">\n"
"      <param name=\"x\" value=\"#{calculator.lhs}\"/>\n"
"      <param name=\"y\" value=\"#{calculator.rhs}\"/>\n"
"      <param name=\"op\" converterId=\"com.my.calculator.OperatorConverter\" value=\"#{calculator.op}\"/>\n"
"   </page>\n"
"</pages>]]>"
msgstr ""
"<![CDATA[<pages>\n"
"   <page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}\">\n"
"      <param name=\"x\" value=\"#{calculator.lhs}\"/>\n"
"      <param name=\"y\" value=\"#{calculator.rhs}\"/>\n"
"      <param name=\"op\" converterId=\"com.my.calculator.OperatorConverter\" value=\"#{calculator.op}\"/>\n"
"   </page>\n"
"</pages>]]>"

#. Tag: para
#: Events.xml:341
#: Events.xml:354
#, no-c-format
msgid "Alternatively:"
msgstr "In alternativa:"

#. Tag: programlisting
#: Events.xml:345
#, no-c-format
msgid ""
"<![CDATA[<pages>\n"
"   <page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}\">\n"
"      <param name=\"x\" value=\"#{calculator.lhs}\"/>\n"
"      <param name=\"y\" value=\"#{calculator.rhs}\"/>\n"
"      <param name=\"op\" converter=\"#{operatorConverter}\" value=\"#{calculator.op}\"/>\n"
"   </page>\n"
"</pages>]]>"
msgstr ""
"<![CDATA[<pages>\n"
"   <page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}\">\n"
"      <param name=\"x\" value=\"#{calculator.lhs}\"/>\n"
"      <param name=\"y\" value=\"#{calculator.rhs}\"/>\n"
"      <param name=\"op\" converter=\"#{operatorConverter}\" value=\"#{calculator.op}\"/>\n"
"   </page>\n"
"</pages>]]>"

#. Tag: para
#: Events.xml:348
#, no-c-format
msgid "JSF validators, and <literal>required=\"true\"</literal> may also be used:"
msgstr "possono essere usati anche i validatori JSF e <literal>required=\"true\"</literal>:"

#. Tag: programlisting
#: Events.xml:352
#, no-c-format
msgid ""
"<![CDATA[<pages>\n"
"    <page view-id=\"/blog.xhtml\">\n"
"        <param name=\"date\" \n"
"               value=\"#{blog.date}\" \n"
"               validatorId=\"com.my.blog.PastDate\" \n"
"               required=\"true\"/>\n"
"    </page>\n"
"</pages>]]>"
msgstr ""
"<![CDATA[<pages>\n"
"    <page view-id=\"/blog.xhtml\">\n"
"        <param name=\"date\" \n"
"               value=\"#{blog.date}\" \n"
"               validatorId=\"com.my.blog.PastDate\" \n"
"               required=\"true\"/>\n"
"    </page>\n"
"</pages>]]>"

#. Tag: programlisting
#: Events.xml:358
#, no-c-format
msgid ""
"<![CDATA[<pages>\n"
"    <page view-id=\"/blog.xhtml\">\n"
"        <param name=\"date\" \n"
"               value=\"#{blog.date}\" \n"
"               validator=\"#{pastDateValidator}\" \n"
"               required=\"true\"/>\n"
"    </page>\n"
"</pages>]]>"
msgstr ""
"<![CDATA[<pages>\n"
"    <page view-id=\"/blog.xhtml\">\n"
"        <param name=\"date\" \n"
"               value=\"#{blog.date}\" \n"
"               validator=\"#{pastDateValidator}\" \n"
"               required=\"true\"/>\n"
"    </page>\n"
"</pages>]]>"

#. Tag: para
#: Events.xml:360
#, no-c-format
msgid "Even better, model-based Hibernate validator annotations are automatically recognized and validated. Seam also provides a default date converter to convert a string parameter value to a date and back."
msgstr "Ancora meglio, le annotazioni di Hibernate validator basate sul modello vengono automaticamente riconosciute e validate. Seam fornisce anche un converter di data di default per convertire un valore di parametro stringa in una data e viceversa."

#. Tag: para
#: Events.xml:366
#, no-c-format
msgid "When type conversion or validation fails, a global <literal>FacesMessage</literal> is added to the <literal>FacesContext</literal>."
msgstr "Quando fallisce la conversione del tipo o la validazione, un <literal>FacesMessage</literal> globale viene aggiunto a <literal>FacesContext</literal>."

#. Tag: title
#: Events.xml:374
#, no-c-format
msgid "Navigation"
msgstr "Navigazione"

#. Tag: para
#: Events.xml:376
#, no-c-format
msgid "You can use standard JSF navigation rules defined in <literal>faces-config.xml</literal> in a Seam application. However, JSF navigation rules have a number of annoying limitations:"
msgstr "Si possono usare le regole di navigazione standard di JSF definite in <literal>faces-config.xml</literal> in un'applicazione Seam. Comunque le regole di navigazione hanno un certo numero di limitazioni spiacevoli:"

#. Tag: para
#: Events.xml:384
#, no-c-format
msgid "It is not possible to specify request parameters to be used when redirecting."
msgstr "Non è possibile specificare i parametri di richiesta da usare in caso di redirection."

#. Tag: para
#: Events.xml:389
#, no-c-format
msgid "It is not possible to begin or end conversations from a rule."
msgstr "Non è possibile iniziare o terminare le conversazione da una regola."

#. Tag: para
#: Events.xml:394
#, no-c-format
msgid "Rules work by evaluating the return value of the action method; it is not possible to evaluate an arbitrary EL expression."
msgstr "Le regole funzionano valutando il valore restituito del metodo d'azione; non è possibile valutare un'espressione EL arbitraria."

#. Tag: para
#: Events.xml:401
#, no-c-format
msgid "A further problem is that \"orchestration\" logic gets scattered between <literal>pages.xml</literal> and <literal>faces-config.xml</literal>. It's better to unify this logic into <literal>pages.xml</literal>."
msgstr "Un altro problema è che la logica di \"orchestrazione\" viene sparsa tra <literal>pages.xml</literal> e <literal>faces-config.xml</literal>. E' meglio unificare questa logica in <literal>pages.xml</literal>."

#. Tag: para
#: Events.xml:406
#, no-c-format
msgid "This JSF navigation rule:"
msgstr "Questa regola di navigazione JSF:"

#. Tag: programlisting
#: Events.xml:410
#, no-c-format
msgid ""
"<![CDATA[<navigation-rule>\n"
"   <from-view-id>/editDocument.xhtml</from-view-id>\n"
"    \n"
"   <navigation-case>\n"
"      <from-action>#{documentEditor.update}</from-action>\n"
"      <from-outcome>success</from-outcome>\n"
"      <to-view-id>/viewDocument.xhtml</to-view-id>\n"
"      <redirect/>\n"
"   </navigation-case>\n"
"    \n"
"</navigation-rule>]]>"
msgstr ""
"<![CDATA[<navigation-rule>\n"
"   <from-view-id>/editDocument.xhtml</from-view-id>\n"
"    \n"
"   <navigation-case>\n"
"      <from-action>#{documentEditor.update}</from-action>\n"
"      <from-outcome>success</from-outcome>\n"
"      <to-view-id>/viewDocument.xhtml</to-view-id>\n"
"      <redirect/>\n"
"   </navigation-case>\n"
"    \n"
"</navigation-rule>]]>"

#. Tag: para
#: Events.xml:412
#, no-c-format
msgid "Can be rewritten as follows:"
msgstr "Può essere riscritto come segue:"

#. Tag: programlisting
#: Events.xml:416
#, no-c-format
msgid ""
"<![CDATA[<page view-id=\"/editDocument.xhtml\">\n"
"    \n"
"    <navigation from-action=\"#{documentEditor.update}\">\n"
"        <rule if-outcome=\"success\">\n"
"            <redirect view-id=\"/viewDocument.xhtml\"/>\n"
"        </rule>\n"
"    </navigation>\n"
"    \n"
"</page>]]>"
msgstr ""
"<![CDATA[<page view-id=\"/editDocument.xhtml\">\n"
"    \n"
"    <navigation from-action=\"#{documentEditor.update}\">\n"
"        <rule if-outcome=\"success\">\n"
"            <redirect view-id=\"/viewDocument.xhtml\"/>\n"
"        </rule>\n"
"    </navigation>\n"
"    \n"
"</page>]]>"

#. Tag: para
#: Events.xml:418
#, no-c-format
msgid "But it would be even nicer if we didn't have to pollute our <literal>DocumentEditor</literal> component with string-valued return values (the JSF outcomes). So Seam lets us write:"
msgstr "Ma sarebbe ancora meglio non dover inquinare il componente <literal>DocumentEditor</literal> con valori di ritorno stringa (gli esiti JSF). Quindi Seam consente di scrivere:"

#. Tag: programlisting
#: Events.xml:423
#, no-c-format
msgid ""
"<![CDATA[<page view-id=\"/editDocument.xhtml\">\n"
"    \n"
"    <navigation from-action=\"#{documentEditor.update}\" \n"
"                   evaluate=\"#{documentEditor.errors.size}\">\n"
"        <rule if-outcome=\"0\">\n"
"            <redirect view-id=\"/viewDocument.xhtml\"/>\n"
"        </rule>\n"
"    </navigation>\n"
"    \n"
"</page>]]>"
msgstr ""
"<![CDATA[<page view-id=\"/editDocument.xhtml\">\n"
"    \n"
"    <navigation from-action=\"#{documentEditor.update}\" \n"
"                   evaluate=\"#{documentEditor.errors.size}\">\n"
"        <rule if-outcome=\"0\">\n"
"            <redirect view-id=\"/viewDocument.xhtml\"/>\n"
"        </rule>\n"
"    </navigation>\n"
"    \n"
"</page>]]>"

#. Tag: para
#: Events.xml:425
#, no-c-format
msgid "Or even:"
msgstr "Od anche:"

#. Tag: programlisting
#: Events.xml:429
#, no-c-format
msgid ""
"<![CDATA[<page view-id=\"/editDocument.xhtml\">\n"
"    \n"
"    <navigation from-action=\"#{documentEditor.update}\">\n"
"        <rule if=\"#{documentEditor.errors.empty}\">\n"
"            <redirect view-id=\"/viewDocument.xhtml\"/>\n"
"        </rule>\n"
"    </navigation>\n"
"    \n"
"</page>]]>"
msgstr ""
"<![CDATA[<page view-id=\"/editDocument.xhtml\">\n"
"    \n"
"    <navigation from-action=\"#{documentEditor.update}\">\n"
"        <rule if=\"#{documentEditor.errors.empty}\">\n"
"            <redirect view-id=\"/viewDocument.xhtml\"/>\n"
"        </rule>\n"
"    </navigation>\n"
"    \n"
"</page>]]>"

#. Tag: para
#: Events.xml:431
#, no-c-format
msgid "The first form evaluates a value binding to determine the outcome value to be used by the subsequent rules. The second approach ignores the outcome and evaluates a value binding for each possible rule."
msgstr "La prima form valuta un valore di binding per determinare il valore d'esito da impiegare nelle regole. Il secondo approccio ignora l'esito e valuta un valore di binding per ogni possibile regola."

#. Tag: para
#: Events.xml:438
#, no-c-format
msgid "Of course, when an update succeeds, we probably want to end the current conversation. We can do that like this:"
msgstr "Certamente quando un aggiornamento ha successo si vorrebbe terminare la conversazione corrente. Si può fare ciò in questo modo:"

#. Tag: programlisting
#: Events.xml:443
#, no-c-format
msgid ""
"<![CDATA[<page view-id=\"/editDocument.xhtml\">\n"
"    \n"
"    <navigation from-action=\"#{documentEditor.update}\">\n"
"        <rule if=\"#{documentEditor.errors.empty}\">\n"
"            <end-conversation/>\n"
"            <redirect view-id=\"/viewDocument.xhtml\"/>\n"
"        </rule>\n"
"    </navigation>\n"
"    \n"
"</page>]]>"
msgstr ""
"<![CDATA[<page view-id=\"/editDocument.xhtml\">\n"
"    \n"
"    <navigation from-action=\"#{documentEditor.update}\">\n"
"        <rule if=\"#{documentEditor.errors.empty}\">\n"
"            <end-conversation/>\n"
"            <redirect view-id=\"/viewDocument.xhtml\"/>\n"
"        </rule>\n"
"    </navigation>\n"
"    \n"
"</page>]]>"

#. Tag: para
#: Events.xml:445
#, no-c-format
msgid "As we've ended conversation any subsequent requests won't know which document we are interested in. We can pass the document id as a request parameter which also makes the view bookmarkable:"
msgstr "Appena terminata la conversazione ogni ulteriore richiesta non saprebbe quale sia il documento di interesse. Si può passare l'id documento come parametro di richiesta che renderebbe la vista memorizzabile come segnalibro:"

#. Tag: programlisting
#: Events.xml:451
#, no-c-format
msgid ""
"<![CDATA[<page view-id=\"/editDocument.xhtml\">\n"
"    \n"
"    <navigation from-action=\"#{documentEditor.update}\">\n"
"        <rule if=\"#{documentEditor.errors.empty}\">\n"
"            <end-conversation/>\n"
"            <redirect view-id=\"/viewDocument.xhtml\">\n"
"                <param name=\"documentId\" value=\"#{documentEditor.documentId}\"/>\n"
"            </redirect>\n"
"        </rule>\n"
"    </navigation>\n"
"    \n"
"</page>]]>"
msgstr ""
"<![CDATA[<page view-id=\"/editDocument.xhtml\">\n"
"    \n"
"    <navigation from-action=\"#{documentEditor.update}\">\n"
"        <rule if=\"#{documentEditor.errors.empty}\">\n"
"            <end-conversation/>\n"
"            <redirect view-id=\"/viewDocument.xhtml\">\n"
"                <param name=\"documentId\" value=\"#{documentEditor.documentId}\"/>\n"
"            </redirect>\n"
"        </rule>\n"
"    </navigation>\n"
"    \n"
"</page>]]>"

#. Tag: para
#: Events.xml:453
#, no-c-format
msgid "Null outcomes are a special case in JSF. The null outcome is interpreted to mean \"redisplay the page\". The following navigation rule matches any non-null outcome, but <emphasis>not</emphasis> the null outcome:"
msgstr "Esiti null sono un caso speciale in JSF. L'esito null viene interpretato come \"rivisualizza la pagina\". La seguente regola di navigazione cerca esiti non-null, ma <emphasis>non</emphasis> l'esito null:"

#. Tag: programlisting
#: Events.xml:459
#, no-c-format
msgid ""
"<![CDATA[<page view-id=\"/editDocument.xhtml\">\n"
"    \n"
"    <navigation from-action=\"#{documentEditor.update}\">\n"
"        <rule>\n"
"            <render view-id=\"/viewDocument.xhtml\"/>\n"
"        </rule>\n"
"    </navigation>\n"
"    \n"
"</page>]]>"
msgstr ""
"<![CDATA[<page view-id=\"/editDocument.xhtml\">\n"
"    \n"
"    <navigation from-action=\"#{documentEditor.update}\">\n"
"        <rule>\n"
"            <render view-id=\"/viewDocument.xhtml\"/>\n"
"        </rule>\n"
"    </navigation>\n"
"    \n"
"</page>]]>"

#. Tag: para
#: Events.xml:461
#, no-c-format
msgid "If you want to perform navigation when a null outcome occurs, use the following form instead:"
msgstr "Se si vuole eseguire la navigazione quando avviene un esito null, si usi la seguente form:"

#. Tag: programlisting
#: Events.xml:466
#, no-c-format
msgid ""
"<![CDATA[<page view-id=\"/editDocument.xhtml\">\n"
"    \n"
"    <navigation from-action=\"#{documentEditor.update}\">\n"
"        <render view-id=\"/viewDocument.xhtml\"/>\n"
"    </navigation>\n"
"    \n"
"</page>]]>"
msgstr ""
"<![CDATA[<page view-id=\"/editDocument.xhtml\">\n"
"    \n"
"    <navigation from-action=\"#{documentEditor.update}\">\n"
"        <render view-id=\"/viewDocument.xhtml\"/>\n"
"    </navigation>\n"
"    \n"
"</page>]]>"

#. Tag: para
#: Events.xml:468
#, no-c-format
msgid "The view-id may be given as a JSF EL expression:"
msgstr "Il view-id può essere assegnato come espressione JSF EL:"

#. Tag: programlisting
#: Events.xml:472
#, no-c-format
msgid ""
"<![CDATA[<page view-id=\"/editDocument.xhtml\">\n"
"\n"
"    <navigation>\n"
"        <rule if-outcome=\"success\">\n"
"            <redirect view-id=\"/#{userAgent}/displayDocument.xhtml\"/>\n"
"        </rule>\n"
"    </navigation>\n"
"    \n"
"</page>]]>"
msgstr ""
"<![CDATA[<page view-id=\"/editDocument.xhtml\">\n"
"\n"
"    <navigation>\n"
"        <rule if-outcome=\"success\">\n"
"            <redirect view-id=\"/#{userAgent}/displayDocument.xhtml\"/>\n"
"        </rule>\n"
"    </navigation>\n"
"    \n"
"</page>]]>"

#. Tag: title
#: Events.xml:477
#, no-c-format
msgid "Fine-grained files for definition of navigation, page actions and parameters"
msgstr "File granulari per la definizione della navigazione, azioni di pagina e parametri"

#. Tag: para
#: Events.xml:479
#, no-c-format
msgid "If you have a lot of different page actions and page parameters, or even just a lot of navigation rules, you will almost certainly want to split the declarations up over multiple files. You can define actions and parameters for a page with the view id <literal>/calc/calculator.jsp</literal> in a resource named <literal>calc/calculator.page.xml</literal>. The root element in this case is the <literal>&lt;page&gt;</literal> element, and the view id is implied:"
msgstr "Se sono presenti molte differenti azioni e parametri di pagina, od anche solo molte regole di navigazione, si vuole quasi sicuramente separare le dichiarazioni in molti file. Si possono definire azioni e parametri per una pagina con id vista <literal>/calc/calculator.jsp</literal> in una risorsa chiamata <literal>calc/calculator.page.xml</literal>. L'elemento radice in questo caso è l'elemento <literal>&lt;page&gt;</literal>, e l'id vista è implicito:"

#. Tag: programlisting
#: Events.xml:490
#, no-c-format
msgid ""
"<![CDATA[<page action=\"#{calculator.calculate}\">\n"
"    <param name=\"x\" value=\"#{calculator.lhs}\"/>\n"
"    <param name=\"y\" value=\"#{calculator.rhs}\"/>\n"
"    <param name=\"op\" converter=\"#{operatorConverter}\" value=\"#{calculator.op}\"/>\n"
"</page>]]>"
msgstr ""
"<![CDATA[<page action=\"#{calculator.calculate}\">\n"
"    <param name=\"x\" value=\"#{calculator.lhs}\"/>\n"
"    <param name=\"y\" value=\"#{calculator.rhs}\"/>\n"
"    <param name=\"op\" converter=\"#{operatorConverter}\" value=\"#{calculator.op}\"/>\n"
"</page>]]>"

#. Tag: title
#: Events.xml:497
#, no-c-format
msgid "Component-driven events"
msgstr "Eventi guidati da componenti"

#. Tag: para
#: Events.xml:499
#, no-c-format
msgid "Seam components can interact by simply calling each others methods. Stateful components may even implement the observer/observable pattern. But to enable components to interact in a more loosely-coupled fashion than is possible when the components call each others methods directly, Seam provides <emphasis>component-driven events</emphasis>."
msgstr "I componenti Seam possono interagire semplicemente chiamando gli uni i metodi degli altri. I componenti stateful possono anche implementare il pattern observer/observable. Ma per abilitare i componenti per interagire in un modo più disaccoppiato rispetto a quando i componenti chiamano direttamente i metodi, Seam fornisce <emphasis>eventi component-driven</emphasis>."

#. Tag: para
#: Events.xml:507
#, no-c-format
msgid "We specify event listeners (observers) in <literal>components.xml</literal>."
msgstr "Si specificano gli event listener (observer) in <literal>components.xml</literal>."

#. Tag: programlisting
#: Events.xml:511
#, no-c-format
msgid ""
"<![CDATA[<components>\n"
"    <event type=\"hello\">\n"
"        <action execute=\"#{helloListener.sayHelloBack}\"/>\n"
"        <action execute=\"#{logger.logHello}\"/>\n"
"    </event>\n"
"</components>]]>"
msgstr ""
"<![CDATA[<components>\n"
"    <event type=\"hello\">\n"
"        <action execute=\"#{helloListener.sayHelloBack}\"/>\n"
"        <action execute=\"#{logger.logHello}\"/>\n"
"    </event>\n"
"</components>]]>"

#. Tag: para
#: Events.xml:513
#, no-c-format
msgid "Where the <emphasis>event type</emphasis> is just an arbitrary string."
msgstr "Dove il <emphasis>tipo di evento</emphasis> è solo una stringa arbitraria."

#. Tag: para
#: Events.xml:517
#, no-c-format
msgid "When an event occurs, the actions registered for that event will be called in the order they appear in <literal>components.xml</literal>. How does a component raise an event? Seam provides a built-in component for this."
msgstr "Quando avviene un evento, le azioni registrate per quest'evento verrà chiamato nell'ordine in cui appare in <literal>components.xml</literal>. Come un componente genera un evento? Seam fornisce un componente predefinito per questo."

#. Tag: programlisting
#: Events.xml:523
#, no-c-format
msgid ""
"<![CDATA[@Name(\"helloWorld\")\n"
"public class HelloWorld {\n"
"    public void sayHello() {\n"
"        FacesMessages.instance().add(\"Hello World!\");\n"
"        Events.instance().raiseEvent(\"hello\");\n"
"    }\n"
"}]]>"
msgstr ""
"<![CDATA[@Name(\"helloWorld\")\n"
"public class HelloWorld {\n"
"    public void sayHello() {\n"
"        FacesMessages.instance().add(\"Hello World!\");\n"
"        Events.instance().raiseEvent(\"hello\");\n"
"    }\n"
"}]]>"

#. Tag: para
#: Events.xml:525
#, no-c-format
msgid "Or you can use an annotation."
msgstr "Oppure si può usare un'annotazione."

#. Tag: programlisting
#: Events.xml:529
#, no-c-format
msgid ""
"<![CDATA[@Name(\"helloWorld\")\n"
"public class HelloWorld {\n"
"    @RaiseEvent(\"hello\")\n"
"    public void sayHello() {\n"
"        FacesMessages.instance().add(\"Hello World!\");\n"
"    }\n"
"}]]>"
msgstr ""
"<![CDATA[@Name(\"helloWorld\")\n"
"public class HelloWorld {\n"
"    @RaiseEvent(\"hello\")\n"
"    public void sayHello() {\n"
"        FacesMessages.instance().add(\"Hello World!\");\n"
"    }\n"
"}]]>"

#. Tag: para
#: Events.xml:531
#, no-c-format
msgid "Notice that this event producer has no dependency upon event consumers. The event listener may now be implemented with absolutely no dependency upon the producer:"
msgstr "Si noti che questo produttore di eventi non ha dipendenza sui consumatori di eventi. L'event listener può adesso essere implementato con nessuna dipendenza sul produttore:"

#. Tag: programlisting
#: Events.xml:537
#, no-c-format
msgid ""
"<![CDATA[@Name(\"helloListener\")\n"
"public class HelloListener {\n"
"    public void sayHelloBack() {\n"
"        FacesMessages.instance().add(\"Hello to you too!\");\n"
"    }\n"
"}]]>"
msgstr ""
"<![CDATA[@Name(\"helloListener\")\n"
"public class HelloListener {\n"
"    public void sayHelloBack() {\n"
"        FacesMessages.instance().add(\"Hello to you too!\");\n"
"    }\n"
"}]]>"

#. Tag: para
#: Events.xml:539
#, no-c-format
msgid "The method binding defined in <literal>components.xml</literal> above takes care of mapping the event to the consumer. If you don't like futzing about in the <literal>components.xml</literal> file, you can use an annotation instead:"
msgstr "Il binding di metodo definito sopra in <literal>components.xml</literal> si preoccupare di mappare l'evento al consumatore. Se non si vuole metter mano al file <literal>components.xml</literal>, si possono usare le annotazioni:"

#. Tag: programlisting
#: Events.xml:546
#, no-c-format
msgid ""
"<![CDATA[@Name(\"helloListener\")\n"
"public class HelloListener {\n"
"    @Observer(\"hello\")\n"
"    public void sayHelloBack() {\n"
"        FacesMessages.instance().add(\"Hello to you too!\");\n"
"    }\n"
"}]]>"
msgstr ""
"<![CDATA[@Name(\"helloListener\")\n"
"public class HelloListener {\n"
"    @Observer(\"hello\")\n"
"    public void sayHelloBack() {\n"
"        FacesMessages.instance().add(\"Hello to you too!\");\n"
"    }\n"
"}]]>"

#. Tag: para
#: Events.xml:548
#, no-c-format
msgid "You might wonder why I've not mentioned anything about event objects in this discussion. In Seam, there is no need for an event object to propagate state between event producer and listener. State is held in the Seam contexts, and is shared between components. However, if you really want to pass an event object, you can:"
msgstr "Ci si potrebbe chiedere perché in questa discussione non si è menzionato niente riguardo gli oggetti evento. In Seam non c'è bisogno di un oggetto evento per propagare lo stato tra produttore evento e listener. Lo stato viene mantenuto nei contesti Seam e viene condiviso tra i componenti. Comunque se si vuole passare un oggetto evento, si può:"

#. Tag: programlisting
#: Events.xml:556
#, no-c-format
msgid ""
"<![CDATA[@Name(\"helloWorld\")\n"
"public class HelloWorld {\n"
"    private String name;\n"
"    public void sayHello() {\n"
"        FacesMessages.instance().add(\"Hello World, my name is #0.\", name);\n"
"        Events.instance().raiseEvent(\"hello\", name);\n"
"    }\n"
"}]]>"
msgstr ""
"<![CDATA[@Name(\"helloWorld\")\n"
"public class HelloWorld {\n"
"    private String name;\n"
"    public void sayHello() {\n"
"        FacesMessages.instance().add(\"Hello World, my name is #0.\", name);\n"
"        Events.instance().raiseEvent(\"hello\", name);\n"
"    }\n"
"}]]>"

#. Tag: programlisting
#: Events.xml:558
#, no-c-format
msgid ""
"<![CDATA[@Name(\"helloListener\")\n"
"public class HelloListener {\n"
"    @Observer(\"hello\")\n"
"    public void sayHelloBack(String name) {\n"
"        FacesMessages.instance().add(\"Hello #0!\", name);\n"
"    }\n"
"}]]>"
msgstr ""
"<![CDATA[@Name(\"helloListener\")\n"
"public class HelloListener {\n"
"    @Observer(\"hello\")\n"
"    public void sayHelloBack(String name) {\n"
"        FacesMessages.instance().add(\"Hello #0!\", name);\n"
"    }\n"
"}]]>"

#. Tag: title
#: Events.xml:563
#, no-c-format
msgid "Contextual events"
msgstr "Eventi contestuali"

#. Tag: para
#: Events.xml:564
#, no-c-format
msgid "Seam defines a number of built-in events that the application can use to perform special kinds of framework integration. The events are:"
msgstr "Seam definisce un numero di eventi predefiniti che l'applicazione può usare per eseguire l'integrazione col framework. Questi eventi sono:"

#. Tag: para
#: Events.xml:570
#, no-c-format
msgid "<literal>org.jboss.seam.validationFailed</literal> &#8212; called when JSF validation fails"
msgstr "<literal>org.jboss.seam.validationFailed</literal> &#8212; chiamato quando fallisce la validazione JSF"

#. Tag: para
#: Events.xml:571
#, no-c-format
msgid "<literal>org.jboss.seam.noConversation</literal> &#8212; called when there is no long running conversation and a long running conversation is required"
msgstr "<literal>org.jboss.seam.noConversation</literal> &#8212; chiamato quando non c'è alcuna conversazione long-running mentre questa è richiesta"

#. Tag: para
#: Events.xml:572
#, no-c-format
msgid "<literal>org.jboss.seam.preSetVariable.&lt;name&gt;</literal> &#8212; called when the context variable &lt;name&gt; is set"
msgstr "<literal>org.jboss.seam.preSetVariable.&lt;name&gt;</literal> &#8212; chiamato quando la variabile di contesto &lt;name&gt; è impostata"

#. Tag: para
#: Events.xml:573
#, no-c-format
msgid "<literal>org.jboss.seam.postSetVariable.&lt;name&gt;</literal> &#8212; called when the context variable &lt;name&gt; is set"
msgstr "<literal>org.jboss.seam.postSetVariable.&lt;name&gt;</literal> &#8212; chiamato quando la variabile di contesto &lt;name&gt; è impostata"

#. Tag: para
#: Events.xml:574
#, no-c-format
msgid "<literal>org.jboss.seam.preRemoveVariable.&lt;name&gt;</literal> &#8212; called when the context variable &lt;name&gt; is unset"
msgstr "<literal>org.jboss.seam.preRemoveVariable.&lt;name&gt;</literal> &#8212; chiamato quando la variabile di contesto &lt;name&gt; non è impostata"

#. Tag: para
#: Events.xml:575
#, no-c-format
msgid "<literal>org.jboss.seam.postRemoveVariable.&lt;name&gt;</literal> &#8212; called when the context variable &lt;name&gt; is unset"
msgstr "<literal>org.jboss.seam.postRemoveVariable.&lt;name&gt;</literal> &#8212; chiamato quando la variabile di contesto &lt;name&gt; non è impostata"

#. Tag: para
#: Events.xml:576
#, no-c-format
msgid "<literal>org.jboss.seam.preDestroyContext.&lt;SCOPE&gt;</literal> &#8212; called before the &lt;SCOPE&gt; context is destroyed"
msgstr "<literal>org.jboss.seam.preDestroyContext.&lt;SCOPE&gt;</literal> &#8212; chiamato prima che il contesto &lt;SCOPE&gt; venga distrutto"

#. Tag: para
#: Events.xml:577
#, no-c-format
msgid "<literal>org.jboss.seam.postDestroyContext.&lt;SCOPE&gt;</literal> &#8212; called after the &lt;SCOPE&gt; context is destroyed"
msgstr "<literal>org.jboss.seam.postDestroyContext.&lt;SCOPE&gt;</literal> &#8212; chiamato prima che il contesto &lt;SCOPE&gt; venga distrutto"

#. Tag: para
#: Events.xml:578
#, no-c-format
msgid "<literal>org.jboss.seam.beginConversation </literal> &#8212; called whenever a long-running conversation begins"
msgstr "<literal>org.jboss.seam.beginConversation </literal> &#8212; chiamato quando inizia una conversazione long-running"

#. Tag: para
#: Events.xml:579
#, no-c-format
msgid "<literal>org.jboss.seam.endConversation </literal> &#8212; called whenever a long-running conversation ends"
msgstr "<literal>org.jboss.seam.endConversation </literal> &#8212; chiamato quando finisce una conversazione long-running"

#. Tag: para
#: Events.xml:580
#, no-c-format
msgid "<literal>org.jboss.seam.conversationTimeout</literal> &#8212; called when a conversation timeout occurs. The conversation id is passed as a parameter."
msgstr "<literal>org.jboss.seam.conversationTimeout</literal> &#8212; chiamato quando avviene un timeout di conversazione. L'id di conversazione viene passato come parametro."

#. Tag: para
#: Events.xml:581
#, no-c-format
msgid "<literal>org.jboss.seam.beginPageflow </literal> &#8212; called when a pageflow begins"
msgstr "<literal>org.jboss.seam.beginPageflow </literal> &#8212; chiamato quando inizia un pageflow"

#. Tag: para
#: Events.xml:582
#, no-c-format
msgid "<literal>org.jboss.seam.beginPageflow.&lt;name&gt; </literal> &#8212; called when the pageflow &lt;name&gt; begins"
msgstr "<literal>org.jboss.seam.beginPageflow.&lt;name&gt; </literal> &#8212; chiamato quando inizia il pageflow &lt;name&gt;"

#. Tag: para
#: Events.xml:583
#, no-c-format
msgid "<literal>org.jboss.seam.endPageflow </literal> &#8212; called when a pageflow ends"
msgstr "<literal>org.jboss.seam.endPageflow </literal> &#8212; chiamato quando finisce il pageflow"

#. Tag: para
#: Events.xml:584
#, no-c-format
msgid "<literal>org.jboss.seam.endPageflow.&lt;name&gt; </literal> &#8212; called when the pageflow &lt;name&gt; ends"
msgstr "<literal>org.jboss.seam.endPageflow.&lt;name&gt; </literal> &#8212; chiamato quando finisce il pageflow &lt;name&gt;"

#. Tag: para
#: Events.xml:585
#, no-c-format
msgid "<literal>org.jboss.seam.createProcess.&lt;name&gt; </literal> &#8212; called when the process &lt;name&gt; is created"
msgstr "<literal>org.jboss.seam.createProcess.&lt;name&gt; </literal> &#8212; chiamato quando viene creato il processo &lt;name&gt;"

#. Tag: para
#: Events.xml:586
#, no-c-format
msgid "<literal>org.jboss.seam.endProcess.&lt;name&gt; </literal> &#8212; called when the process &lt;name&gt; ends"
msgstr "<literal>org.jboss.seam.endProcess.&lt;name&gt; </literal> &#8212; chiamato quando finisce il processo &lt;name&gt;"

#. Tag: para
#: Events.xml:587
#, no-c-format
msgid "<literal>org.jboss.seam.initProcess.&lt;name&gt; </literal> &#8212; called when the process &lt;name&gt; is associated with the conversation"
msgstr "<literal>org.jboss.seam.initProcess.&lt;name&gt; </literal> &#8212; chiamato quando il processo &lt;name&gt; è associato alla conversazione"

#. Tag: para
#: Events.xml:588
#, no-c-format
msgid "<literal>org.jboss.seam.initTask.&lt;name&gt; </literal> &#8212; called when the task &lt;name&gt; is associated with the conversation"
msgstr "<literal>org.jboss.seam.initTask.&lt;name&gt; </literal> &#8212; chiamato quando il task &lt;name&gt; è associato alla conversazione"

#. Tag: para
#: Events.xml:589
#, no-c-format
msgid "<literal>org.jboss.seam.startTask.&lt;name&gt; </literal> &#8212; called when the task &lt;name&gt; is started"
msgstr "<literal>org.jboss.seam.startTask.&lt;name&gt; </literal> &#8212; chiamato quando il task &lt;name&gt; viene avviato"

#. Tag: para
#: Events.xml:590
#, no-c-format
msgid "<literal>org.jboss.seam.endTask.&lt;name&gt; </literal> &#8212; called when the task &lt;name&gt; is ended"
msgstr "<literal>org.jboss.seam.endTask.&lt;name&gt; </literal> &#8212; chiamato quando il task &lt;name&gt; viene terminato"

#. Tag: para
#: Events.xml:591
#, no-c-format
msgid "<literal>org.jboss.seam.postCreate.&lt;name&gt; </literal> &#8212; called when the component &lt;name&gt; is created"
msgstr "<literal>org.jboss.seam.postCreate.&lt;name&gt; </literal> &#8212; chiamato quando il componente &lt;name&gt; viene creato"

#. Tag: para
#: Events.xml:592
#, no-c-format
msgid "<literal>org.jboss.seam.preDestroy.&lt;name&gt; </literal> &#8212; called when the component &lt;name&gt; is destroyed"
msgstr "<literal>org.jboss.seam.preDestroy.&lt;name&gt; </literal> &#8212; chiamato quando il componente &lt;name&gt; viene distrutto"

#. Tag: para
#: Events.xml:593
#, no-c-format
msgid "<literal>org.jboss.seam.beforePhase </literal> &#8212; called before the start of a JSF phase"
msgstr "<literal>org.jboss.seam.beforePhase </literal> &#8212; chiamato prima dell'inizio di una fase JSF"

#. Tag: para
#: Events.xml:594
#, no-c-format
msgid "<literal>org.jboss.seam.afterPhase </literal> &#8212; called after the end of a JSF phase"
msgstr "<literal>org.jboss.seam.afterPhase </literal> &#8212; chiamato dopo la fine di una fase JSF"

#. Tag: para
#: Events.xml:595
#, no-c-format
msgid "<literal>org.jboss.seam.postInitialization </literal> &#8212; called when Seam has initialized and started up all components"
msgstr "<literal>org.jboss.seam.postInitialization </literal> &#8212; chiamato quando Seam ha inizializzato e avviato tutti i componenti"

#. Tag: para
#: Events.xml:596
#, no-c-format
msgid "<literal>org.jboss.seam.postReInitialization </literal> &#8212; called when Seam has re-initialized and started up all components after a redeploy"
msgstr "<literal>org.jboss.seam.postReInitialization </literal> &#8212; chiamato quando Seam ha reinizializzato ed avviato tutti i componenti dopo un redeploy"

#. Tag: para
#: Events.xml:597
#, no-c-format
msgid "<literal>org.jboss.seam.exceptionHandled.&lt;type&gt;</literal> &#8212; called when an uncaught exception is handled by Seam"
msgstr "<literal>org.jboss.seam.exceptionHandled.&lt;type&gt;</literal> &#8212; chiamato quando viene gestita da Seam un'eccezione non catturata del tipo &lt;type&gt;"

#. Tag: para
#: Events.xml:598
#, no-c-format
msgid "<literal>org.jboss.seam.exceptionHandled</literal> &#8212; called when an uncaught exception is handled by Seam"
msgstr "<literal>org.jboss.seam.exceptionHandled</literal> &#8212; chiamato quando viene gestita da Seam un'eccezione non catturata"

#. Tag: para
#: Events.xml:599
#, no-c-format
msgid "<literal>org.jboss.seam.exceptionNotHandled</literal> &#8212; called when there was no handler for an uncaught exception"
msgstr "<literal>org.jboss.seam.exceptionNotHandled</literal> &#8212; chiamato quando non c'è alcun handler per eccezioni non catturate"

#. Tag: para
#: Events.xml:600
#, no-c-format
msgid "<literal>org.jboss.seam.afterTransactionSuccess</literal> &#8212; called when a transaction succeeds in the Seam Application Framework"
msgstr "<literal>org.jboss.seam.afterTransactionSuccess</literal> &#8212; chiamato quando ha successo una transazione nel Seam Application Framework"

#. Tag: para
#: Events.xml:601
#, no-c-format
msgid "<literal>org.jboss.seam.afterTransactionSuccess.&lt;name&gt;</literal> &#8212; called when a transaction succeeds in the Seam Application Framework which manages an entity called <literal>&lt;name&gt;</literal>"
msgstr "<literal>org.jboss.seam.afterTransactionSuccess.&lt;name&gt;</literal> &#8212; chiamato quando ha successo una transazione nel Seam Application Framework che gestisce un'entità chiamata <literal>&lt;name&gt;</literal>"

#. Tag: para
#: Events.xml:602
#, no-c-format
msgid "<literal>org.jboss.seam.security.loggedOut</literal> &#8212; called when a user logs out"
msgstr "<literal>org.jboss.seam.security.loggedOut</literal> &#8212; chiamato quando un utente si disconnette"

#. Tag: para
#: Events.xml:603
#, no-c-format
msgid "<literal>org.jboss.seam.security.loginFailed</literal> &#8212; called when a user authentication attempt fails"
msgstr "<literal>org.jboss.seam.security.loginFailed</literal> &#8212; chiamato quando fallisce un tentativo di autenticazione utente"

#. Tag: para
#: Events.xml:604
#, no-c-format
msgid "<literal>org.jboss.seam.security.loginSuccessful</literal> &#8212; called when a user is successfully authenticated"
msgstr "<literal>org.jboss.seam.security.loginSuccessful</literal> &#8212; chiamato quando un utente si autentica con successo"

#. Tag: para
#: Events.xml:605
#, no-c-format
msgid "<literal>org.jboss.seam.security.notAuthorized</literal> &#8212; called when an authorization check fails"
msgstr "<literal>org.jboss.seam.security.notAuthorized</literal> &#8212; chiamato quando fallisce un controllo di autorizzazione"

#. Tag: para
#: Events.xml:606
#, no-c-format
msgid "<literal>org.jboss.seam.security.notLoggedIn</literal> &#8212; called there is no authenticated user and authentication is required"
msgstr "<literal>org.jboss.seam.security.notLoggedIn</literal> &#8212; chiamato quando non è autenticato alcun utente mentre l'autenticazione è richiesta"

#. Tag: para
#: Events.xml:607
#, no-c-format
msgid "<literal>org.jboss.seam.security.postAuthenticate.</literal> &#8212; called after a user is authenticated"
msgstr "<literal>org.jboss.seam.security.postAuthenticate.</literal> &#8212; chiamato dopo che un utente viene autenticato"

#. Tag: para
#: Events.xml:608
#, no-c-format
msgid "<literal>org.jboss.seam.security.preAuthenticate</literal> &#8212; called before attempting to authenticate a user"
msgstr "<literal>org.jboss.seam.security.preAuthenticate</literal> &#8212; chiamato prima del tentativo di autenticazione di un utente"

#. Tag: para
#: Events.xml:611
#, no-c-format
msgid "Seam components may observe any of these events in just the same way they observe any other component-driven events."
msgstr "I componenti Seam possono osservare uno di questi eventi così come osservano qualsiasi altro evento guidato da componente."

#. Tag: title
#: Events.xml:620
#, no-c-format
msgid "Seam interceptors"
msgstr "Interceptor Seam"

#. Tag: para
#: Events.xml:622
#, no-c-format
msgid "EJB 3.0 introduced a standard interceptor model for session bean components. To add an interceptor to a bean, you need to write a class with a method annotated <literal>@AroundInvoke</literal> and annotate the bean with an <literal>@Interceptors</literal> annotation that specifies the name of the interceptor class. For example, the following interceptor checks that the user is logged in before allowing invoking an action listener method:"
msgstr "EJB 3.0 ha introdotto un modello standard di interceptor per componenti session bean. Per aggiungere un interceptor ad un bean, occorre scrivere una classe con un metodo annotato con <literal>@AroundInvoke</literal> ed annotare il bean con l'annotazione <literal>@Interceptors</literal> che specifica il nome della classe interceptor. Per esempio, il seguente interceptor controlla che l'utente sia loggato prima di consentire l'invocazione di un metodo action listener:"

#. Tag: programlisting
#: Events.xml:631
#, no-c-format
msgid ""
"<![CDATA[public class LoggedInInterceptor {\n"
"\n"
"   @AroundInvoke\n"
"   public Object checkLoggedIn(InvocationContext invocation) throws Exception {\n"
"   \n"
"      boolean isLoggedIn = Contexts.getSessionContext().get(\"loggedIn\")!=null;\n"
"      if (isLoggedIn) {\n"
"         //the user is already logged in\n"
"         return invocation.proceed();\n"
"      }\n"
"      else {\n"
"         //the user is not logged in, fwd to login page\n"
"         return \"login\";\n"
"      }\n"
"   }\n"
"\n"
"}]]>"
msgstr ""
"<![CDATA[public class LoggedInInterceptor {\n"
"\n"
"   @AroundInvoke\n"
"   public Object checkLoggedIn(InvocationContext invocation) throws Exception {\n"
"   \n"
"      boolean isLoggedIn = Contexts.getSessionContext().get(\"loggedIn\")!=null;\n"
"      if (isLoggedIn) {\n"
"         //l'utente è già loggato\n"
"         return invocation.proceed();\n"
"      }\n"
"      else {\n"
"         //l'utente non è loggato, prosegui alla pagina di login\n"
"         return \"login\";\n"
"      }\n"
"   }\n"
"\n"
"}]]>"

#. Tag: para
#: Events.xml:633
#, no-c-format
msgid "To apply this interceptor to a session bean which acts as an action listener, we must annotate the session bean <literal>@Interceptors(LoggedInInterceptor.class)</literal>. This is a somewhat ugly annotation. Seam builds upon the interceptor framework in EJB3 by allowing you to use <literal>@Interceptors</literal> as a meta-annotation for class level interceptors (those annotated <literal>@Target(TYPE)</literal>). In our example, we would create an <literal>@LoggedIn</literal> annotation, as follows:"
msgstr "Per applicare quest'interceptor ad un bean di sessione che agisce come action listener, si deve annotare il bean con <literal>@Interceptors(LoggedInInterceptor.class)</literal>. E' un'annotazione un pò brutta. Seam è basato sul framework interceptor di EJB3 e consente di usare <literal>@Interceptors</literal> come meta-annotazione per gli interceptor di livello classe (quelli annotati con <literal>@Target(TYPE)</literal>). Nell'esempio si vuole creare un'annotazione <literal>@LoggedIn</literal>, come segue:"

#. Tag: programlisting
#: Events.xml:642
#, no-c-format
msgid ""
"<![CDATA[@Target(TYPE)\n"
"@Retention(RUNTIME)\n"
"@Interceptors(LoggedInInterceptor.class)\n"
"public @interface LoggedIn {}]]>"
msgstr ""
"<![CDATA[@Target(TYPE)\n"
"@Retention(RUNTIME)\n"
"@Interceptors(LoggedInInterceptor.class)\n"
"public @interface LoggedIn {}]]>"

#. Tag: para
#: Events.xml:644
#, no-c-format
msgid "We can now simply annotate our action listener bean with <literal>@LoggedIn</literal> to apply the interceptor."
msgstr "Ora si può semplicemente annotare il bean action listener con <literal>@LoggedIn</literal> per applicare l'interceptor."

#. Tag: programlisting
#: Events.xml:649
#, no-c-format
msgid ""
"<![CDATA[@Stateless\n"
"@Name(\"changePasswordAction\")\n"
"@LoggedIn\n"
"@Interceptors(SeamInterceptor.class)\n"
"public class ChangePasswordAction implements ChangePassword { \n"
"    \n"
"    ...\n"
"    \n"
"    public String changePassword() { ... }\n"
"    \n"
"}]]>"
msgstr ""
"<![CDATA[@Stateless\n"
"@Name(\"changePasswordAction\")\n"
"@LoggedIn\n"
"@Interceptors(SeamInterceptor.class)\n"
"public class ChangePasswordAction implements ChangePassword { \n"
"    \n"
"    ...\n"
"    \n"
"    public String changePassword() { ... }\n"
"    \n"
"}]]>"

#. Tag: para
#: Events.xml:651
#, no-c-format
msgid "If interceptor ordering is important (it usually is), you can add <literal>@Interceptor</literal> annotations to your interceptor classes to specify a partial order of interceptors."
msgstr "Se l'ordine degli interceptor è importante (solitamente lo è), si possono aggiungere le annotazioni <literal>@Interceptor</literal> alle classi interceptor per specificare un ordine parziale di interceptor."

#. Tag: programlisting
#: Events.xml:657
#, no-c-format
msgid ""
"<![CDATA[@Interceptor(around={BijectionInterceptor.class,\n"
"                     ValidationInterceptor.class,\n"
"                     ConversationInterceptor.class},\n"
"             within=RemoveInterceptor.class)\n"
"public class LoggedInInterceptor\n"
"{\n"
"    ...\n"
"}]]>"
msgstr ""
"<![CDATA[@Interceptor(around={BijectionInterceptor.class,\n"
"                     ValidationInterceptor.class,\n"
"                     ConversationInterceptor.class},\n"
"             within=RemoveInterceptor.class)\n"
"public class LoggedInInterceptor\n"
"{\n"
"    ...\n"
"}]]>"

#. Tag: para
#: Events.xml:659
#, no-c-format
msgid "You can even have a \"client-side\" interceptor, that runs around any of the built-in functionality of EJB3:"
msgstr "Si può anche avere un interceptor \"lato client\", che giri attorno ad ogni funzionalità predefinita di EJB3:"

#. Tag: programlisting
#: Events.xml:664
#, no-c-format
msgid ""
"<![CDATA[@Interceptor(type=CLIENT)\n"
"public class LoggedInInterceptor\n"
"{\n"
"    ...\n"
"}]]>"
msgstr ""
"<![CDATA[@Interceptor(type=CLIENT)\n"
"public class LoggedInInterceptor\n"
"{\n"
"    ...\n"
"}]]>"

#. Tag: para
#: Events.xml:666
#, no-c-format
msgid "EJB interceptors are stateful, with a lifecycle that is the same as the component they intercept. For interceptors which do not need to maintain state, Seam lets you get a performance optimization by specifying <literal>@Interceptor(stateless=true)</literal>."
msgstr "Gli interceptor EJB sono stateful, con un ciclo di vita che è lo stesso dei componenti che intercettano. Per gli interceptor che non hanno bisogno di mantenere uno stato, Seam consente di ottenere un'ottimizzazione di performance specificando <literal>@Interceptor(stateless=true)</literal>."

#. Tag: para
#: Events.xml:673
#, no-c-format
msgid "Much of the functionality of Seam is implemented as a set of built-in Seam interceptors, including the interceptors named in the previous example. You don't have to explicitly specify these interceptors by annotating your components; they exist for all interceptable Seam components."
msgstr "Molte delle funzionalità di Seam sono implementate come set di interceptor predefiniti, includendo gli interceptor chiamati nel precedente esempio. Non è necessario specificare esplicitamente questi interceptor annotando i componenti; esistono per tutti i componenti Seam intercettabili."

#. Tag: para
#: Events.xml:680
#, no-c-format
msgid "You can even use Seam interceptors with JavaBean components, not just EJB3 beans!"
msgstr "Si possono usare gli interceptor Seam anche con i componenti JavaBean, non solo bean EJB3!"

#. Tag: para
#: Events.xml:684
#, no-c-format
msgid "EJB defines interception not only for business methods (using <literal>@AroundInvoke</literal>), but also for the lifecycle methods <literal>@PostConstruct</literal>, <literal>@PreDestroy</literal>, <literal>@PrePassivate</literal> and <literal>@PostActive</literal>. Seam supports all these lifecycle methods on both component and interceptor not only for EJB3 beans, but also for JavaBean components (except <literal>@PreDestroy</literal> which is not meaningful for JavaBean components)."
msgstr "EJB definisce l'interception non solo per i metodi di business (usando <literal>@AroundInvoke</literal>), ma anche per i metodi del ciclo di vita <literal>@PostConstruct</literal>, <literal>@PreDestroy</literal>, <literal>@PrePassivate</literal> e <literal>@PostActive</literal>. Seam supporta tutti questi metodi del ciclo di vita sia per i componenti sia per gli interceptor, non solo per bean EJB3, ma anche per componenti JavaBean (tranne <literal>@PreDestroy</literal> che non è significativo per i componenti JavaBean)."

#. Tag: title
#: Events.xml:696
#, no-c-format
msgid "Managing exceptions"
msgstr "Gestione delle eccezioni"

#. Tag: para
#: Events.xml:698
#, no-c-format
msgid "JSF is surprisingly limited when it comes to exception handling. As a partial workaround for this problem, Seam lets you define how a particular class of exception is to be treated by annotating the exception class, or declaring the exception class in an XML file. This facility is meant to be combined with the EJB 3.0-standard <literal>@ApplicationException</literal> annotation which specifies whether the exception should cause a transaction rollback."
msgstr "JSF è soprendentemente limitato quando si tratta di gestione delle eccezioni. Come parziale soluzione a questo problema, Seam consente di definire come una particolare classe di eccezioni debba essere trattata annotando la classe eccezione o dichiarando l'eccezione in un file XML. Quest'opzione ha il significato di essere combinata con l'annotazione standard EJB3.0 <literal>@ApplicationException</literal> che specifica se l'eccezione debba causare un rollback della transazione."

#. Tag: title
#: Events.xml:708
#, no-c-format
msgid "Exceptions and transactions"
msgstr "Eccezioni e transazioni"

#. Tag: para
#: Events.xml:710
#, no-c-format
msgid "EJB specifies well-defined rules that let us control whether an exception immediately marks the current transaction for rollback when it is thrown by a business method of the bean: <emphasis>system exceptions</emphasis> always cause a transaction rollback, <emphasis>application exceptions</emphasis> do not cause a rollback by default, but they do if <literal>@ApplicationException(rollback=true)</literal> is specified. (An application exception is any checked exception, or any unchecked exception annotated <literal>@ApplicationException</literal>. A system exception is any unchecked exception without an <literal>@ApplicationException</literal> annotation.)"
msgstr "EJB specifica regole ben-definite che consentono di controllare se un'eccezione marca immediatamente la transazione corrente per il rollback quando è lanciata da un metodo business del bean: <emphasis>eccezioni di sistema</emphasis> causano sempre un rollback della transazione, <emphasis>eccezioni di applicazione</emphasis> di default non causano un rollback, ma lo fanno se viene specificato <literal>@ApplicationException(rollback=true)</literal>. (Un'eccezione di applicazione è una qualsiasi eccezione controllata, o una qualsiasi eccezioni non controllata annotatacon <literal>@ApplicationException</literal>. Un'eccezione di sistema è una qualsiasi eccezioni non controllata senza l'annotazione <literal>@ApplicationException</literal>.)"

#. Tag: para
#: Events.xml:723
#, no-c-format
msgid "Note that there is a difference between marking a transaction for rollback, and actually rolling it back. The exception rules say that the transaction should be marked rollback only, but it may still be active after the exception is thrown."
msgstr "Si noti la differenza fra marcare una transazione per il rollback ed eseguire effettivamente il rollback. Le regole di eccezione dicono che la transazione debba essere solo marcata rollback, ma questa possa essere attiva dopo che l'eccezione venga lanciata."

#. Tag: para
#: Events.xml:730
#, no-c-format
msgid "Seam applies the EJB 3.0 exception rollback rules also to Seam JavaBean components."
msgstr "Seam applica le regole di rollback per eccezioni EJB 3.0 anche ai componenti JavaBean."

#. Tag: para
#: Events.xml:735
#, no-c-format
msgid "But these rules only apply in the Seam component layer. What about an exception that is uncaught and propagates out of the Seam component layer, and out of the JSF layer? Well, it is always wrong to leave a dangling transaction open, so Seam rolls back any active transaction when an exception occurs and is uncaught in the Seam component layer."
msgstr "Queste regole si applicano solo al layer componenti di Seam. Ma cosa succede se un'eccezione che non viene catturata si propaga fuori dal layer componenti di Seam, e fuori dal layer JSF? E' sempre sbagliato lasciare aperta una transazione pendente, quindi Seam esegue il rollback per ogni transazione attiva quando avviene un'eccezione e non viene catturata dal layer componenti di Seam."

#. Tag: title
#: Events.xml:745
#, no-c-format
msgid "Enabling Seam exception handling"
msgstr "Abilitare la gestione delle eccezioni di Seam"

#. Tag: para
#: Events.xml:747
#, no-c-format
msgid "To enable Seam's exception handling, we need to make sure we have the master servlet filter declared in <literal>web.xml</literal>:"
msgstr "Per abilitare la gestione delle eccezioni in Seam, occorre aver dichiarato il filtro servlet in <literal>web.xml</literal>:"

#. Tag: programlisting
#: Events.xml:752
#, no-c-format
msgid ""
"<![CDATA[<filter>\n"
"    <filter-name>Seam Filter</filter-name>\n"
"    <filter-class>org.jboss.seam.servlet.SeamFilter</filter-class>\n"
"</filter>\n"
"\n"
"<filter-mapping>\n"
"    <filter-name>Seam Filter</filter-name>\n"
"    <url-pattern>*.seam</url-pattern>\n"
"</filter-mapping>]]>"
msgstr ""
"<![CDATA[<filter>\n"
"    <filter-name>Seam Filter</filter-name>\n"
"    <filter-class>org.jboss.seam.servlet.SeamFilter</filter-class>\n"
"</filter>\n"
"\n"
"<filter-mapping>\n"
"    <filter-name>Seam Filter</filter-name>\n"
"    <url-pattern>*.seam</url-pattern>\n"
"</filter-mapping>]]>"

#. Tag: para
#: Events.xml:754
#, no-c-format
msgid "You need to disable Facelets development mode in <literal>web.xml</literal> and Seam debug mode in <literal>components.xml</literal> if you want your exception handlers to fire."
msgstr "Occorre disabilitare la modalità sviluppo di Facelets in <literal>web.xml</literal> e la modalità debug di Seam in <literal>components.xml</literal> se si vuole eseguire la gestione eccezioni."

#. Tag: title
#: Events.xml:763
#, no-c-format
msgid "Using annotations for exception handling"
msgstr "Uso delle annotazioni per la gestione delle eccezioni"

#. Tag: para
#: Events.xml:765
#, no-c-format
msgid "The following exception results in a HTTP 404 error whenever it propagates out of the Seam component layer. It does not roll back the current transaction immediately when thrown, but the transaction will be rolled back if it the exception is not caught by another Seam component."
msgstr "La seguente eccezione ha origine in un errore HTTP 404 quanfo si propaga fuori dal layer componenti di Seam. Non esegue immediatamente il rollback della transazione quando lanciata, ma il rollback avverrà se l'eccezione non viene catturata da un altro componente Seam."

#. Tag: programlisting
#: Events.xml:772
#, no-c-format
msgid ""
"<![CDATA[@HttpError(errorCode=404)\n"
"public class ApplicationException extends Exception { ... }]]>"
msgstr ""
"<![CDATA[@HttpError(errorCode=404)\n"
"public class ApplicationException extends Exception { ... }]]>"

#. Tag: para
#: Events.xml:774
#, no-c-format
msgid "This exception results in a browser redirect whenever it propagates out of the Seam component layer. It also ends the current conversation. It causes an immediate rollback of the current transaction."
msgstr "Quest'eccezione ha origine in un redirect del browser quando si propaga fuori dal layer componenti di Seam. Termina anche la conversazione corrente e causa un immediato rollback della transazione."

#. Tag: programlisting
#: Events.xml:780
#, no-c-format
msgid ""
"<![CDATA[@Redirect(viewId=\"/failure.xhtml\", end=true)\n"
"@ApplicationException(rollback=true)\n"
"public class UnrecoverableApplicationException extends RuntimeException { ... }]]>"
msgstr ""
"<![CDATA[@Redirect(viewId=\"/failure.xhtml\", end=true)\n"
"@ApplicationException(rollback=true)\n"
"public class UnrecoverableApplicationException extends RuntimeException { ... }]]>"

#. Tag: note
#: Events.xml:782
#, no-c-format
msgid "It is important to note that Seam cannot handle exceptions that occur during JSF's RENDER_RESPONSE phase, as it is not possible to perform a redirect once the response has started being written to."
msgstr "E'importante notare che Seam non può gestire le eccezioni che avvengono durante la fase RENDER_RESPONSE di JSF, poiché non è possibile eseguire un redirect una volta che si è iniziato a scrivere la risposta."

#. Tag: para
#: Events.xml:788
#, no-c-format
msgid "You can also use EL to specify the <literal>viewId</literal> to redirect to."
msgstr "Si può anche usare EL per specificare il <literal>viewId</literal> a cui reindirizzare."

#. Tag: para
#: Events.xml:792
#, no-c-format
msgid "This exception results in a redirect, along with a message to the user, when it propagates out of the Seam component layer. It also immediately rolls back the current transaction."
msgstr "Quest'eccezione risulta in un redirect, assieme al messaggio per l'utente, quando propaga oltre il layer del componente Seam. Immediatamente viene eseguito un rollback alla transazione corrente."

#. Tag: programlisting
#: Events.xml:798
#, no-c-format
msgid ""
"<![CDATA[@Redirect(viewId=\"/error.xhtml\", message=\"Unexpected error\")\n"
"public class SystemException extends RuntimeException { ... }]]>"
msgstr ""
"<![CDATA[@Redirect(viewId=\"/error.xhtml\", message=\"Unexpected error\")\n"
"public class SystemException extends RuntimeException { ... }]]>"

#. Tag: title
#: Events.xml:803
#, no-c-format
msgid "Using XML for exception handling"
msgstr "Uso di XML per la gestione delle eccezioni"

#. Tag: para
#: Events.xml:805
#, no-c-format
msgid "Since we can't add annotations to all the exception classes we are interested in, Seam also lets us specify this functionality in <literal>pages.xml</literal>."
msgstr "Poiché non si possono aggiungere annotazioni a tutte le classi d'eccezione a cui si è interessati, Seam consente di specificare questa funzionalità in <literal>pages.xml</literal>."

#. Tag: programlisting
#: Events.xml:810
#, no-c-format
msgid ""
"<![CDATA[<pages>\n"
"   \n"
"   <exception class=\"javax.persistence.EntityNotFoundException\">\n"
"      <http-error error-code=\"404\"/>\n"
"   </exception>\n"
"   \n"
"   <exception class=\"javax.persistence.PersistenceException\">\n"
"      <end-conversation/>\n"
"      <redirect view-id=\"/error.xhtml\">\n"
"          <message>Database access failed</message>\n"
"      </redirect>\n"
"   </exception>\n"
"   \n"
"   <exception>\n"
"      <end-conversation/>\n"
"      <redirect view-id=\"/error.xhtml\">\n"
"          <message>Unexpected failure</message>\n"
"      </redirect>\n"
"   </exception>\n"
"   \n"
"</pages>]]>"
msgstr ""
"<![CDATA[<pages>\n"
"   \n"
"   <exception class=\"javax.persistence.EntityNotFoundException\">\n"
"      <http-error error-code=\"404\"/>\n"
"   </exception>\n"
"   \n"
"   <exception class=\"javax.persistence.PersistenceException\">\n"
"      <end-conversation/>\n"
"      <redirect view-id=\"/error.xhtml\">\n"
"          <message>Database access failed</message>\n"
"      </redirect>\n"
"   </exception>\n"
"   \n"
"   <exception>\n"
"      <end-conversation/>\n"
"      <redirect view-id=\"/error.xhtml\">\n"
"          <message>Unexpected failure</message>\n"
"      </redirect>\n"
"   </exception>\n"
"   \n"
"</pages>]]>"

#. Tag: para
#: Events.xml:812
#, no-c-format
msgid "The last <literal>&lt;exception&gt;</literal> declaration does not specify a class, and is a catch-all for any exception for which handling is not otherwise specified via annotations or in <literal>pages.xml</literal>."
msgstr "L'ultima dichiarazione <literal>&lt;exception&gt;</literal> non specifica una classe, ed è un cattura-tutto per qualsiasi eccezione per cui la gestione non è altrimenti specifica tramite annotazioni o in <literal>pages.xml</literal>."

#. Tag: para
#: Events.xml:818
#, no-c-format
msgid "You can also use EL to specify the <literal>view-id</literal> to redirect to."
msgstr "Si può anche usare EL per specificare la <literal>view-id</literal> a cui reindirizzare."

#. Tag: para
#: Events.xml:822
#, no-c-format
msgid "You can also access the handled exception instance through EL, Seam places it in the conversation context, e.g. to access the message of the exception:"
msgstr "Si può anche accedere all'istanza dell'eccezione gestita attraverso EL, Seam la mette nel contesto conversazione, es. per accedere al messaggio dell'eccezione:"

#. Tag: programlisting
#: Events.xml:827
#, no-c-format
msgid ""
"<![CDATA[...\n"
"throw new AuthorizationException(\"You are not allowed to do this!\");\n"
"\n"
"<pages>\n"
"\n"
"    <exception class=\"org.jboss.seam.security.AuthorizationException\">\n"
"        <end-conversation/>\n"
"        <redirect view-id=\"/error.xhtml\">\n"
"            <message severity=\"WARN\">#{org.jboss.seam.handledException.message}</message>\n"
"        </redirect>\n"
"    </exception>\n"
"\n"
"</pages>]]>"
msgstr ""
"<![CDATA[...\n"
"throw new AuthorizationException(\"You are not allowed to do this!\");\n"
"\n"
"<pages>\n"
"\n"
"    <exception class=\"org.jboss.seam.security.AuthorizationException\">\n"
"        <end-conversation/>\n"
"        <redirect view-id=\"/error.xhtml\">\n"
"            <message severity=\"WARN\">#{org.jboss.seam.handledException.message}</message>\n"
"        </redirect>\n"
"    </exception>\n"
"\n"
"</pages>]]>"

#. Tag: para
#: Events.xml:829
#, no-c-format
msgid "<literal>org.jboss.seam.handledException</literal> holds the nested exception that was actually handled by an exception handler. The outermost (wrapper) exception is also available, as <literal>org.jboss.seam.caughtException</literal>."
msgstr "<literal>org.jboss.seam.handledException</literal> mantiene l'eccezione annidata che è stata gestita dall'exception handler. L'eccezione più esterna (wrapper) è disponibile, come <literal>org.jboss.seam.caughtException</literal>."

#. Tag: title
#: Events.xml:836
#, no-c-format
msgid "Suppressing exception logging"
msgstr "Soppressione del log delle eccezioni"

#. Tag: para
#: Events.xml:838
#, no-c-format
msgid "For the exception handlers defined in <literal>pages.xml</literal>, it is possible to declare the logging level at which the exception will be logged, or to even suppress the exception being logged altogether. The attributes <literal>log</literal> and <literal>log-level</literal> can be used to control exception logging. By setting <literal>log=\"false\"</literal> as per the following example, then no log message will be generated when the specified exception occurs:"
msgstr "Per la gestione eccezioni definita in <literal>pages.xml</literal>, è possibile dichiarare il livello di logging con cui loggare l'eccezione o anche sopprimere l'eccezioneche viene loggata altrove. Gli attributi <literal>log</literal> e <literal>log-level</literal> possono essere usati per controllare il logging dell'eccezione. Impostando <literal>log=\"false\"</literal> come nel prossimo esempio, allora non verrà generato alcun messaggio quando avviene l'eccezione specificata:"

#. Tag: programlisting
#: Events.xml:847
#, no-c-format
msgid ""
"<![CDATA[    <exception class=\"org.jboss.seam.security.NotLoggedInException\" log=\"false\">\n"
"        <redirect view-id=\"/register.xhtml\">\n"
"            <message severity=\"warn\">You must be a member to use this feature</message>\n"
"        </redirect>\n"
"    </exception>]]>"
msgstr ""
"<![CDATA[    <exception class=\"org.jboss.seam.security.NotLoggedInException\" log=\"false\">\n"
"        <redirect view-id=\"/register.xhtml\">\n"
"            <message severity=\"warn\">You must be a member to use this feature</message>\n"
"        </redirect>\n"
"    </exception>]]>"

#. Tag: para
#: Events.xml:849
#, no-c-format
msgid "If the <literal>log</literal> attribute is not specified, then it defaults to <literal>true</literal> (i.e. the exception will be logged). Alternatively, you can specify the <literal>log-level</literal> to control at which log level the exception will be logged:"
msgstr "Se l'attributo <literal>log</literal> non è specificato, allora il suo default è <literal>true</literal> (cioè l'eccezione viene loggata). in alternativa, si può specificare il <literal>log-level</literal> per controllare a quale livello verrà loggata l'eccezione:"

#. Tag: programlisting
#: Events.xml:855
#, no-c-format
msgid ""
"<![CDATA[    <exception class=\"org.jboss.seam.security.NotLoggedInException\" log-level=\"info\">\n"
"        <redirect view-id=\"/register.xhtml\">\n"
"            <message severity=\"warn\">You must be a member to use this feature</message>\n"
"        </redirect>\n"
"    </exception>]]>"
msgstr ""
"<![CDATA[    <exception class=\"org.jboss.seam.security.NotLoggedInException\" log-level=\"info\">\n"
"        <redirect view-id=\"/register.xhtml\">\n"
"            <message severity=\"warn\">You must be a member to use this feature</message>\n"
"        </redirect>\n"
"    </exception>]]>"

#. Tag: para
#: Events.xml:857
#, no-c-format
msgid "The acceptable values for <literal>log-level</literal> are: <literal>fatal, error, warn, info, debug</literal> or <literal>trace</literal>. If the <literal>log-level</literal> is not specified, or if an invalid value is configured, then it will default to <literal>error</literal>."
msgstr "Valori accettabili per <literal>log-level</literal> sono: <literal>fatal, error, warn, info, debug</literal> o <literal>trace</literal>. Se non viene specificato <literal>log-level</literal> o se è configurato un valore non valido, allora il default è <literal>error</literal>."

#. Tag: title
#: Events.xml:868
#, no-c-format
msgid "Some common exceptions"
msgstr "Alcune eccezioni comuni"

#. Tag: para
#: Events.xml:870
#, no-c-format
msgid "If you are using JPA:"
msgstr "Se si usa JPA:"

#. Tag: programlisting
#: Events.xml:874
#, no-c-format
msgid ""
"<![CDATA[<exception class=\"javax.persistence.EntityNotFoundException\">\n"
"   <redirect view-id=\"/error.xhtml\">\n"
"      <message>Not found</message>\n"
"   </redirect>\n"
"</exception>\n"
"\n"
"<exception class=\"javax.persistence.OptimisticLockException\">\n"
"   <end-conversation/>\n"
"   <redirect view-id=\"/error.xhtml\">\n"
"      <message>Another user changed the same data, please try again</message>\n"
"   </redirect>\n"
"</exception>]]>"
msgstr ""
"<![CDATA[<exception class=\"javax.persistence.EntityNotFoundException\">\n"
"   <redirect view-id=\"/error.xhtml\">\n"
"      <message>Not found</message>\n"
"   </redirect>\n"
"</exception>\n"
"\n"
"<exception class=\"javax.persistence.OptimisticLockException\">\n"
"   <end-conversation/>\n"
"   <redirect view-id=\"/error.xhtml\">\n"
"      <message>Another user changed the same data, please try again</message>\n"
"   </redirect>\n"
"</exception>]]>"

#. Tag: para
#: Events.xml:876
#, no-c-format
msgid "If you are using the Seam Application Framework:"
msgstr "Se si usa il Seam Application Framework:"

#. Tag: programlisting
#: Events.xml:880
#, no-c-format
msgid ""
"<![CDATA[<exception class=\"org.jboss.seam.framework.EntityNotFoundException\">\n"
"   <redirect view-id=\"/error.xhtml\">\n"
"      <message>Not found</message>\n"
"   </redirect>\n"
"</exception>]]>"
msgstr ""
"<![CDATA[<exception class=\"org.jboss.seam.framework.EntityNotFoundException\">\n"
"   <redirect view-id=\"/error.xhtml\">\n"
"      <message>Not found</message>\n"
"   </redirect>\n"
"</exception>]]>"

#. Tag: para
#: Events.xml:882
#, no-c-format
msgid "If you are using Seam Security:"
msgstr "Se si usa Seam Security:"

#. Tag: programlisting
#: Events.xml:886
#, no-c-format
msgid ""
"<![CDATA[<exception class=\"org.jboss.seam.security.AuthorizationException\">\n"
"   <redirect>\n"
"      <message>You don't have permission to do this</message>\n"
"   </redirect>\n"
"</exception>\n"
"    \n"
"<exception class=\"org.jboss.seam.security.NotLoggedInException\">\n"
"   <redirect view-id=\"/login.xhtml\">\n"
"      <message>Please log in first</message>\n"
"   </redirect>\n"
"</exception>]]>"
msgstr ""
"<![CDATA[<exception class=\"org.jboss.seam.security.AuthorizationException\">\n"
"   <redirect>\n"
"      <message>You don't have permission to do this</message>\n"
"   </redirect>\n"
"</exception>\n"
"    \n"
"<exception class=\"org.jboss.seam.security.NotLoggedInException\">\n"
"   <redirect view-id=\"/login.xhtml\">\n"
"      <message>Please log in first</message>\n"
"   </redirect>\n"
"</exception>]]>"

#. Tag: para
#: Events.xml:888
#, no-c-format
msgid "And, for JSF:"
msgstr "E per JSF:"

#. Tag: programlisting
#: Events.xml:892
#, no-c-format
msgid ""
"<![CDATA[<exception class=\"javax.faces.application.ViewExpiredException\">\n"
"   <redirect view-id=\"/error.xhtml\">\n"
"      <message>Your session has timed out, please try again</message>\n"
"   </redirect>\n"
"</exception>]]>"
msgstr ""
"<![CDATA[<exception class=\"javax.faces.application.ViewExpiredException\">\n"
"   <redirect view-id=\"/error.xhtml\">\n"
"      <message>Your session has timed out, please try again</message>\n"
"   </redirect>\n"
"</exception>]]>"

#. Tag: para
#: Events.xml:894
#, no-c-format
msgid "A <literal>ViewExpiredException</literal> occurs if the user posts back to a page once their session has expired. The <literal>conversation-required</literal> and <literal>no-conversation-view-id</literal> settings in the Seam page descriptor, discussed in <xref linkend=\"conversations.required\"/>, give you finer-grained control over session expiration if you are accessing a page used within a conversation."
msgstr "Avviene una <literal>ViewExpiredException</literal> se l'utente invia una pagina quando la sessione è scaduta. Le impostazioni di <literal>conversation-required</literal> e <literal>no-conversation-view-id</literal> nel descrittore di pagina Seam, discusse in <xref linkend=\"conversations.required\"/>, consentono un controllo più fine sulla scadenza della sessione se si è all'interno di una conversazione."

#~ msgid "conversation-required"
#~ msgstr "conversation-required"
#~ msgid ""
#~ "When specified as the attribute of a <literal>page</literal> element in "
#~ "<literal>pages.xml</literal>, this setting controls whether a page "
#~ "requires an active long-running or nested conversation before being "
#~ "rendered. If there is not an active long-running or nested conversation "
#~ "when trying to access the page, you will be redirected to the <literal>no-"
#~ "conversation-view-id</literal> view (which is specified in the root "
#~ "<literal>pages</literal> element) instead."
#~ msgstr ""
#~ "Quando è specificato come attributo dell'elemento <literal>page</literal> "
#~ "in <literal>pages.xml</literal>, quest'impostazione controlla se una "
#~ "pagina richiede una conversazione attiva long-running o annidata prima di "
#~ "essere renderizzata. Se, quando si accede alla pagina, non ci sono né una "
#~ "conversazione attiva long-running né annidata, si verrà invece ridiretti "
#~ "alla vista <literal>no-conversation-view-id</literal> (che viene "
#~ "specificata nell'elemento radice <literal>pages</literal>)"
#~ msgid ""
#~ "<![CDATA[  <page view-id=\"/foo.xhtml\" conversation-required=\"true\"/>]]"
#~ ">"
#~ msgstr ""
#~ "<![CDATA[  <page view-id=\"/foo.xhtml\" conversation-required=\"true\"/>]]"
#~ ">"
#~ msgid "<![CDATA[TODO: translate struts action into page action]]>"
#~ msgstr "<![CDATA[TODO: translate struts action into page action]]>"

