2012-05-29 16 views
6

Ho bisogno di lavorare con stringhe lunghe contenenti interruzioni di riga in Java. Quelli sono per la generazione di HTML, ma qui non è il più importante.Lavorare con stringhe lunghe (heredocs) in Java: l'approccio leggibile?

Sono consapevole che Java è cripple in un modo che non ha heredocs. Ma ci sono altri meccanismi potrei usare:

1) String concatenazione (o StringBuilders), non molto leggibile e copia-pasteable.

2) Memorizzazione di stringhe nei file .proprietà, non molto leggibili, ma con maggiore copiabilità.

3) Memorizzazione di ogni "heredoc" in separata .txt di file, abbastanza leggibile e copypasteable, ma con conseguente un'orda di file txt.

motori 4) dei modelli, come Velocity o Freemarker - si muove la progettazione di Java, richiede un sacco di operazioni mappa, sarebbe abbastanza buona, ma la sintassi di velocità e loop/se capacità non sono così leggibile come ad esempio quelli di Smarty

Ognuno ha pro e contras, mi piacerebbe scegliere 3 ma la gestione preferisce 1 per motivi puramente ideologici. Mi piacerebbe avere degli standard per lavorare con heredocs in Java, possibilmente una libreria che renda le cose più facili. Sarei grato per qualsiasi suggerimento (con buoni argomenti) su come lavorare con heredocs.

Thanx

+0

C'è una ragione per cui non è possibile utilizzare uno degli strumenti per la generazione di template/HTML esistenti per Java? Ce ne sono molti: Velocity, FreeMarker, ecc. –

+2

Thread relativo gigante qui: http://stackoverflow.com/questions/878573/java-multiline-string/5069681#5069681 – scorpiodawg

+0

E un altro thread heredoc: http://stackoverflow.com/domande/2678483/semplice-direct-heredoc-way-of-costruire-a-html-string-in-java –

risposta

7

Odio essere "quel tipo", che suggerisce che si prende un approccio completamente diverso da quello che hai chiesto, ma hai guardato Groovy? È un linguaggio JVM, può essere mescolato liberamente con Java e, oltre ad un sacco di altre caratteristiche linguistiche davvero belle, ha heredocs.

Problemi correlati