2013-11-04 15 views
5

Ho un testo fornito dall'utente che mi piacerebbe visualizzare correttamente nel browser (con le nuove linee sostituite con <br/>-tag). Desidero che tutti gli altri tag HTML siano sfuggiti. Qual'è il miglior modo per farlo?Sostituzione n con <br> tag

+0

Questo è veramente difficile da aiutare senza alcun codice fornito. Nella mia esperienza, anche i valori di stringa con \ n appaiono correttamente nel browser. Ad esempio i miei dati Json nel tipo String appaiono formattati correttamente nel browser senza dover usare
cYn

+0

@cYn Non so quale browser stai usando, ma nessuno dei miei mostrerà \ n come una nuova riga. –

+0

Qui dovevo vedere un po 'di codice. In realtà dovevi aggiungere "\ n" nel tuo codice Java? O hai lasciato che l'utente semplicemente premesse invio e memorizzasse tutto quel testo che l'utente ha inserito in una stringa? – cYn

risposta

11

Non è la soluzione più bella, ma funzionerà. Se la vista accetta un parametro stringa str, allora @Html(HtmlFormat.escape(str).toString.replace("\n", "<br />")) per prima cosa sfuggirà alla stringa, quindi sostituirà tutte le istanze di \ n con <br /> e infine la trasformerà nuovamente in html in modo che Play non tenti di sfuggire ai caratteri già salvati. Se vuoi anche scappare \ r o \ r \ n puoi incatenare un altro replace o usare una regex.

+0

Bene, mi sarei aspettato che il framework fornisse alcuni strumenti per un caso d'uso comune. Ad ogni modo, è bello sapere che c'è almeno un modo semplice per accedere a un "escaper" HTML. Grazie. – szymond

+0

Non sono riuscito a trovare nulla nell'API di riproduzione che sembrava un'opzione migliore, ma forse ce n'è uno. Per comodità potrebbe essere meglio avvolgerlo in un'altra funzione. –

0

Per prima cosa sfuggire al testo, quindi sostituire le interruzioni di riga con <br>. Lo <br> non verrà sostituito in questo modo.

Problemi correlati