Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [Java] Thymeleaf come torno a capo?

    Buongiorno, tento di andare a capo così:

    Passo un messaggio tramite Java:

    codice:
    String messaggio = "messaggio \n"; 
    String messaggio = "messaggio"+(char)10;
    Ma nulla...non trovo nulla sul web, eppure il problema dovrebbe essere arcinoto.

    Il thymeleaf
    codice:
     th:text=${messaggio}
    lo ignora.
    Ultima modifica di jabjoint; 08-02-2023 a 17:39
    jabjoint

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da jabjoint Visualizza il messaggio
    Passo un messaggio tramite Java:

    codice:
    String messaggio = "messaggio \n"; 
    String messaggio = "messaggio"+(char)10;
    Ma nulla...
    In generale nel HTML i whitespace e i newline NON sono significativi. Tranne in certi contesti, come in un contesto pre-formatted (<pre>).

    In HTML il line break è <br> quindi devi scegliere tu a quale livello mettere i <br>.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Quote Originariamente inviata da andbin Visualizza il messaggio
    In generale nel HTML i whitespace e i newline NON sono significativi. Tranne in certi contesti, come in un contesto pre-formatted (<pre>).

    In HTML il line break è <br> quindi devi scegliere tu a quale livello mettere i <br>.
    Si è così, col <pre> funziona tuttavia rimane il problema del ritorno a capo in automatico così essendo pre fromattato.

    Mi domando allora se col thymeleaf è possibile inserire tag passandoli da JAVA.

    Per esempio e solo per rendere l'idea cosi':

    String stringa = " Questa è una stringa di esempio th:tag=${\br} ";
    jabjoint

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da jabjoint Visualizza il messaggio
    Mi domando allora se col thymeleaf è possibile inserire tag passandoli da JAVA.
    Da Java si può benissimo passare una stringa es. "Ciao<br>Prova" e poi nel template usi th:utext (non th:text) che è la versione unescaped, cioè Thymeleaf NON fa escape di nulla e inietta nella pagina la stringa così com'è.

    Ma attenzione! Se la stringa è cablata nel codice, è in una configurazione o comunque è sotto il TUO controllo, non ci sono problemi. Sei tu che la scriverai correttamente per evitare problemi. Se invece la intera stringa è data o generata da dati che arrivano ad esempio da db (inseriti da altri utenti), allora NO, perché esporresti le pagine web a potenziali gravi vulnerabilità di injection.

    Se ti arriva da db una stringa es. "Ciao\r\nProva" (per \r\n intendo il newline, anche solo \n in termini Unix), allora dovresti spezzare tu la stringa in righe (ci sono vari modi: regex, BufferedReader, Scanner), fare tu l'escape delle righe e poi ricomporle mettendo in mezzo i <br> .
    Thymeleaf tira dentro una libreria che si chiama unbescape che ha una classe di utilità HtmlEscape, quindi si può usare questa per l'escaping HTML.


    Se invece i <br> li vuoi generare a livello di template, al template passi un array di righe e poi th:each per mettere ciascuna riga con il <br> dietro.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Da Java si può benissimo passare una stringa es. "Ciao<br>Prova" e poi nel template usi th:utext (non th:text) che è la versione unescaped, cioè Thymeleaf NON fa escape di nulla e inietta nella pagina la stringa così com'è.

    Ma attenzione! Se la stringa è cablata nel codice, è in una configurazione o comunque è sotto il TUO controllo, non ci sono problemi. Sei tu che la scriverai correttamente per evitare problemi. Se invece la intera stringa è data o generata da dati che arrivano ad esempio da db (inseriti da altri utenti), allora NO, perché esporresti le pagine web a potenziali gravi vulnerabilità di injection.

    Se ti arriva da db una stringa es. "Ciao\r\nProva" (per \r\n intendo il newline, anche solo \n in termini Unix), allora dovresti spezzare tu la stringa in righe (ci sono vari modi: regex, BufferedReader, Scanner), fare tu l'escape delle righe e poi ricomporle mettendo in mezzo i <br> .
    Thymeleaf tira dentro una libreria che si chiama unbescape che ha una classe di utilità HtmlEscape, quindi si può usare questa per l'escaping HTML.


    Se invece i <br> li vuoi generare a livello di template, al template passi un array di righe e poi th:each per mettere ciascuna riga con il <br> dietro.
    Grazie @andbin, gentilissimo.
    jabjoint

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.