Passa ai contenuti principali

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

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.

Post popolari in questo blog

Se excel non aggiorna le formule

Oggi in ufficio è capitata una richiesta particolare. In un documento excel dopo aver eseguito un copia-incolla di una formula non si aggiornavano i risultati nelle celle interessate. Dopo attimi di perplessità dal fondo dell'ufficio il capo ci illumina con una funzione ai più sconosciuta e che ha risolto il problema: il tasto F9. Scusate la mia ignoranza in excel ma questo blog è pensato proprio per appuntare esperienze di vita informatica. Tutto sta nel fatto che i "calcolatori d'un tempo" non disponevano di una adeguata potenza di calcolo e nelle operazioni di copia-incolla si verificavano lunghe attese per l'aggiornamento. La soluzione adottata da MS è stata quella di inserire un'opzione per impedire l'aggiornamento automatico e forzarlo con una combinazione di tasti... il tasto F9!
Combinazioni utili per il calcolo delle formule F9 = calcola le formule modificate dall'ultimo calcolo in tutte le cartelle e fogli di lavoro aperte. MAIUSC + F9 = c…

Dove si trova il mio ISP?

Il link di oggi è My IP Address Lookup. Questo servizio spagnolo mostra dove si trova fisicamente il vostro ISP. Quando vi collegate ad internet in realtà prima fate una richiesta (il vostro modem o router) ad una macchina del vostro ISP e poi vi viene assegnato un indirizzo IP. Se volete sapere dove si trova la macchina che vi permette di accedere alla rete visitate pure
http://www.ip-adress.com/

Potrete inoltre conoscere il vostro IP e il provider che ve lo offre

Riflessioni sull'ordinamento

Gli algoritmi di ordinamento sono da sempre i più gettonati e interessanti dal punto di vista didattico (si veda la complessità computazionale) e funzionale (quasi tutti i programmi hanno almeno una funzione di ricerca). Proprio di questi giorni sono alcuni articoli di Programmazione.it dedicati a questo tema (link).Coding Horror in questo articolo presenta una provocazione molto interessante al di là delle opinioni personali:

The default sort functions in almost every programming language are poorly
suited for human consumption.
L'articolo pone l'attenzione sulla differenza tra l'ordinamento alfanumerico e quello ASCII solitamente usato nei metodi nativi dei linguaggi. Il discorso si ampia se poi pensiamo banalmente alla differenza tra Windows e GNU/Linux che è case sensitive.
Spesso i sistemi operativi e i linguaggi di programmazione realizzano ordinamenti rispettando l'ordine della tabella di codifica ASCII e non l'ordinamento naturale della lingua. I commenti a se…