JavaServer Pages: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica |
Nessun oggetto della modifica |
||
Riga 64:
:'''<code><nowiki>jsp:forward</nowiki></code>''': cede il controllo, definitivamente, a un'altra pagina JSP
:'''<code><nowiki>jsp:param</nowiki></code>''': introduce un parametro aggiuntivo nel contesto di azioni come <code>include</code> e <code>forward</code>.
== Librerie di tag JSP ==▼
Oltre alle azioni predefinite, gli sviluppatori possono aggiungere ''action'' sviluppate da loro usando le API per l'estensioni dei tag JSP. Gli sviluppatori scrivono una classe Java che implementa una delle interfacce Tag e forniscono una descrizione XML della libreria in cui si specificano i tag e le classi java che li implementano.▼
Consideriamo il seguente codice:▼
<%@ taglib uri="mytaglib.tld" prefix="myprefix" %>▼
...▼
<myprefix:myaction> <%-- il tag di apertura %>▼
...▼
</myprefix:myaction> <%-- il tag di chiusura %>▼
...▼
Il compilatore JSP caricherà il file ''mytaglib.tld'' e vedrà che il tag 'myaction' è implementato dalla classe 'MyActionTag'. La prima volta che il tag viene usato nel file, verrà creata un'istanza di 'MyActionTag'. Quindi (e ogni volta che il tag viene usato), verrà invocato il metodo ''''doStartTag()'''' quando viene incontrato il tag di apertura. Viene esaminato il risultato del tag di apertura e si determina come processare il contenuto del tag. Il contenuto è il testo compreso fra il tag di apertura e quello di chiusura. Il metodo ''doStrtTag()'' può restituire uno dei seguenti valori:▼
* SKIP_BODY - il contenuto del tag non verrà esaminato.▼
* EVAL_BODY_INCLUDE - processa il contenuto del tag.▼
* EVAL_BODY_TAG - processa il contenuto del TAG e invia il risultato nello stream di uscita.▼
'''NOTA''': se il tag estende la classe '''BodyTagSupport''' verrà invocato quando il corpo è stato processato appena prima di invocare il metodo '''doEndTag'''. Questo metodo viene usato per implementare costrutti di loop.▼
Quando viene incontrato il tag di chiusura, viene invocato il metodo '''doEndTag'''. Questo metodo può restituire uno dei seguenti valori.▼
* EVAL_PAGE - indica che il resto della pagina JSP deve essere processato.▼
* SKIP_PAGE - indica che non ci devono essere ulteriori elaborazioni. Il controllo lascia la pagina JSP. Viene impiegato per le azioni di forward.▼
Il tag MyAction su descritto potrebbe avere una implementazione simile a questa:▼
public class MyActionTag extends TagSupport {▼
//Releases all instance variables.▼
public void release() {...}▼
public MyActionTag() { ... }▼
//called for the start tag▼
public int doStartTag() { ... }▼
//called at the end tag▼
public int doEndTag() throws JspTagException { ... }▼
}▼
== Internazionalizzazione ==
Riga 99 ⟶ 133:
<jsp:getProperty name="myBean" property="lastChanged" />
<jsp:setProperty name="myBean" property="lastChanged" value="<%= new Date()%>" />
▲== Librerie di tag JSP ==
▲Oltre alle azioni predefinite, gli sviluppatori possono aggiungere ''action'' sviluppate da loro usando le API per l'estensioni dei tag JSP. Gli sviluppatori scrivono una classe Java che implementa una delle interfacce Tag e forniscono una descrizione XML della libreria in cui si specificano i tag e le classi java che li implementano.
▲Consideriamo il seguente codice:
▲ <%@ taglib uri="mytaglib.tld" prefix="myprefix" %>
▲ ...
▲ <myprefix:myaction> <%-- il tag di apertura %>
▲ ...
▲ </myprefix:myaction> <%-- il tag di chiusura %>
▲ ...
▲Il compilatore JSP caricherà il file ''mytaglib.tld'' e vedrà che il tag 'myaction' è implementato dalla classe 'MyActionTag'. La prima volta che il tag viene usato nel file, verrà creata un'istanza di 'MyActionTag'. Quindi (e ogni volta che il tag viene usato), verrà invocato il metodo ''''doStartTag()'''' quando viene incontrato il tag di apertura. Viene esaminato il risultato del tag di apertura e si determina come processare il contenuto del tag. Il contenuto è il testo compreso fra il tag di apertura e quello di chiusura. Il metodo ''doStrtTag()'' può restituire uno dei seguenti valori:
▲* SKIP_BODY - il contenuto del tag non verrà esaminato.
▲* EVAL_BODY_INCLUDE - processa il contenuto del tag.
▲* EVAL_BODY_TAG - processa il contenuto del TAG e invia il risultato nello stream di uscita.
▲'''NOTA''': se il tag estende la classe '''BodyTagSupport''' verrà invocato quando il corpo è stato processato appena prima di invocare il metodo '''doEndTag'''. Questo metodo viene usato per implementare costrutti di loop.
▲Quando viene incontrato il tag di chiusura, viene invocato il metodo '''doEndTag'''. Questo metodo può restituire uno dei seguenti valori.
▲* EVAL_PAGE - indica che il resto della pagina JSP deve essere processato.
▲* SKIP_PAGE - indica che non ci devono essere ulteriori elaborazioni. Il controllo lascia la pagina JSP. Viene impiegato per le azioni di forward.
▲Il tag MyAction su descritto potrebbe avere una implementazione simile a questa:
▲ public class MyActionTag extends TagSupport {
▲ //Releases all instance variables.
▲ public void release() {...}
▲ public MyActionTag() { ... }
▲ //called for the start tag
▲ public int doStartTag() { ... }
▲ //called at the end tag
▲ public int doEndTag() throws JspTagException { ... }
▲ }
== JSP 2.0 ==
|