Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    615

    [JSTL] Quando agiscono?

    Carissimi,
    come sapete nelle mie web applications faccio largo uso delle librerie JSTL che mi hanno permesso di "pulire" tutte le pagine JSP da ogni traccia di codice Java. Sono eccellenti, e le sostituirò solo quando passerò alle più corpose librerie Struts.

    Solo una domanda. Lunghi frammenti di codice vengono creati o meno da tag JSTL, in statement del tipo (espressi in linguaggio discorsivo):

    Se il ruolo della persona X è "collaboratore", allora "crea" queste 200 righe aggiuntive di codice HTML, altrimenti se è "cliente" crea queste altre 300

    In altre parole lunghi blocchi html sono racchiusi da tag <c: if ... > e vengono creati solo al verificarsi di certe condizioni. Ecco, spero di essermi espresso bene.

    Vi chiedo ora: le istruzioni JSTL sono eseguite già nel server e quindi la pagina è inviata al client già definita (sarebbe un'ottima notizia, verrebbero inviate al server le pagine con le sole righe HTML necessarie risparmiando quelle inutili) o tutto il codice html verrebbe inviato al client, e solo qui le librerie JSTL agirebbero (brutta notizia, visto che al server verrebbe inviato tutto il codice della pagina, anche quello inutile, che poi il codice JSTL escluderebbe)?

    Grazie a tutti.

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [JSTL] Quando agiscono?

    Originariamente inviato da Shadow976
    Vi chiedo ora: le istruzioni JSTL sono eseguite già nel server e quindi la pagina è inviata al client già definita (sarebbe un'ottima notizia, verrebbero inviate al server le pagine con le sole righe HTML necessarie risparmiando quelle inutili) o tutto il codice html verrebbe inviato al client, e solo qui le librerie JSTL agirebbero (brutta notizia, visto che al server verrebbe inviato tutto il codice della pagina, anche quello inutile, che poi il codice JSTL escluderebbe)?
    Qualunque standard/custom tag viene eseguito lato server. Al client viene inviato solo il risultato finale della valutazione/esecuzione di questi tag.

    Se per un <c:if> la condizione è false, il tag non valuta e non scrive in output il suo contenuto e il client non vede quindi il contenuto e in ogni caso mai il custom tag stesso!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    615
    Questa è una grandissima notizia, ti ringrazio, sei stato molto veloce! Presumo quindi che se questo vale per tutti i tag JSTL, valga anche per quelli che si occupano di localizzare la lingua, ovvero, se ho un file di testi enorme separato dalla pagina, JSTL preleverà solo i testi necessari alla pagina e trasmetterà al server il risultato finale.

    Mi hai fatto venire una grande idea. La mia pagina non ha frame (e voglio che non ne abbia!); solo, ha una corposa parte che costituisce il menù ed una parte più piccola, quella funzionale ("piccola", parlo ovviamente di dimensioni del codice, non di dimensioni geometriche dei pannelli). Se io tenessi la parte del menù in una pagina madre e con il tag JSTL include "trascinerei" in quella pagina una seconda pagina html che in realtà sarebbe la sola parte funzionale, avrei snellito molto il codice della pagina principale e lo avrei reso più ordinato.

    Potrei fare anche molto di più! Quando l'utente cambia pagina, potrei trovare il modo di caricare la sola parte funzionale, così la parte del menù non si ricarichierebbe ogni volta. Già, ma come fare? Vorrei evitare Ajax (se poi l'utente ha js disattivato come fa?). Chissà se giocando con il tag JSTL "include" potrei farlo... Cosa ne pensi?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Shadow976
    Presumo quindi che se questo vale per tutti i tag JSTL, valga anche per quelli che si occupano di localizzare la lingua, ovvero, se ho un file di testi enorme separato dalla pagina, JSTL preleverà solo i testi necessari alla pagina e trasmetterà al server il risultato finale.
    Se intendi ad esempio <fmt:bundle> sì, definisci un "bundle" la cui risorsa "fisica" dipende anche dal locale e poi con <fmt:message> vai a pescare solo le key che ti servono e solo nella risorsa scelta per il bundle.

    Originariamente inviato da Shadow976
    Se io tenessi la parte del menù in una pagina madre e con il tag JSTL include "trascinerei" in quella pagina una seconda pagina html che in realtà sarebbe la sola parte funzionale, avrei snellito molto il codice della pagina principale e lo avrei reso più ordinato.
    Lo fai con la direttiva <%@ include %> o con la standard action <jsp:include> (in questi casi non centra JSTL!) o ancora usando JSTL con <c:import>. E c'è una differenza importante. La direttiva include inserisce fisicamente il file referenziato nella pagina jsp a tempo di traslazione (quindi "statico"). Mentre gli altri due modi sono "dinamici" (eseguito ad ogni request).

    Originariamente inviato da Shadow976
    Potrei fare anche molto di più! Quando l'utente cambia pagina, potrei trovare il modo di caricare la sola parte funzionale, così la parte del menù non si ricarichierebbe ogni volta. Già, ma come fare? Vorrei evitare Ajax (se poi l'utente ha js disattivato come fa?).
    Con Ajax e la modifica del DOM ... lo fai. Senza questo e senza i frame non lo vedo fattibile.

    Originariamente inviato da Shadow976
    Chissà se giocando con il tag JSTL "include" potrei farlo...
    Con i vari metodi di include l'unica cosa che ottieni è il fatto di poter spostare un pezzo di pagina in 1 unico singolo file fisico. Ma poi al client arriverà comunque tutta la pagina completa. E ogni volta che la chiedi.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    615
    1) Ottimo per il bundle, era esattamente il metodo da me usato
    2) Ottimo per i metodi include, li ho compresi.
    3) Se ho ben capito la differenza, import è statico, include dinamico. Questo significa che se io dovessi caricare una pagina con un tag include, quindi via Ajax dovessi modificare quel tag include a pagina caricata, il nuovo tag include inserito via Ajax andrebbe a prendere le risorse direttamente dal server. Intendevi questo?
    4) Perfetto per l'uso di Ajax, i frame non credo servano perché tutti i miei pannelli sono gestiti con tag div. Solo, visto che parliamo di un uso di Ajax così importante e radicato nell'applicazione... Se fossi così gentile da dare una occhiata al mio quesito da poco posto sull'uso di js & ajax mi toglieresti ogni timore!

    Grazie tantissimo per la tua disponibilità.

    Originariamente inviato da andbin
    Se intendi ad esempio <fmt:bundle> sì, definisci un "bundle" la cui risorsa "fisica" dipende anche dal locale e poi con <fmt:message> vai a pescare solo le key che ti servono e solo nella risorsa scelta per il bundle.

    Lo fai con la direttiva <%@ include %> o con la standard action <jsp:include> (in questi casi non centra JSTL!) o ancora usando JSTL con <c:import>. E c'è una differenza importante. La direttiva include inserisce fisicamente il file referenziato nella pagina jsp a tempo di traslazione (quindi "statico"). Mentre gli altri due modi sono "dinamici" (eseguito ad ogni request).

    Con Ajax e la modifica del DOM ... lo fai. Senza questo e senza i frame non lo vedo fattibile.

    Con i vari metodi di include l'unica cosa che ottieni è il fatto di poter spostare un pezzo di pagina in 1 unico singolo file fisico. Ma poi al client arriverà comunque tutta la pagina completa. E ogni volta che la chiedi.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.