JSF: update in p:commandButton non funziona con ui:include

18:30:00

Problema
Immaginiamo di avere una pagina principale che includa una sezione. Ora immaginiamo di avere un pulsante nella pagina inclusa che voglia comandare la pagina chiamante.

Prima soluzione: non funzionante
La pagina chiamante è del tipo:

 
    
 
In pagina2.xhtml troviamo il bottone
 

Questa soluzione non funziona ma...

Seconda soluzione: funzionante 
... se aggiungiamo un panelGroup esterno il tutto inizia a girare come desiderato

    
        
    


perchè?

Spiegazione
Il nocciolo della questione sta nel fatto che il codice javascript risiede lato client (viene scaricato con la pagina web per intenderci) mentre JSF viene lavorato lato server. E' il server che processa il file xhtml e genera del html da restituire al client. Ora nel momento in cui premiamo il pulsante lo span generato via JSF non sarà presente per via dell'attributo renreded. La soluzione è quindi quella di mantenere uno span al più vuoto con id="A" in modo che sia sempre a disposizione del codice javascript. Un altro caso di utilizzo di questo accorgimento è quando per esempio apriamo un popup che alla chiusura debba aggiornare la pagina chiamante.
Il consiglio è quindi quello di fare sempre attenzione alla separazione che esiste tra la pagina generata dal server e il codice javascript che facciamo eseguire al client.

You Might Also Like

0 commenti