Andrea, Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
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
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, Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet