Como tratar uma textarea em um servlet

Senhores,

Tenho um campo textarea em um jsp que chama um servlet e passa seus campos via request. Quando recebo este campo no servlet, eu o recebo como string e no momento em que eu vou exibilo em um arquivo PDF, que estou gerando com o iText, o campo aparece como uma única linha.

Exemplo

Conteúdo do textarea é:
abcd
efgh
ijkl

Ou seja, no campo textarea temnho 3 linhas.

Como recebo este campo no servlet:
abcdefghijkl

Ou seja, recebo o campo como uma única linha. O que já era de se esperar pog.r ser um campo Strin

Alguém sabe como posso receber este campo no servlet exatamente como no campo textarea do jsp, ou seja, como posso receber o campo com salto de linha?

Abraços,

Augusto

Voce tem certeza que a string vem exatamente toda junta, logo apos o getParameter()?

Se voce digitar um texto com quebras de linhas, as quebras de linhas irao vir junto com o conteudo, tanto que se vc fizer um texto como

...
String conteudo = request.getParameter("texto");
...
out.println(conteuto.replaceAll("\n", "<br>"));
...

O texto ira aparecer no HTML da mesma forma como voce escreveu ele…

Rafael

Rafael,

Eu monto um campo String em um determinado servlet e o envio via request para um JSP que o apresenta em um textarea.

Quando estou montando este variável String eu uso “\n” para saltar as linhas.

Por exemplo:

String montado no servlet 1 e enviado para o jsp

String xxx =  "abc" + "z\n" + "def" + "z\n" + "ghi";

Textarea apresentado pelo jsp

abc def ghi
Um outro servlet recebe este campo textarea do JSP, via request, e o grava em um arquivo PDF utilizando o iText. No arquivo PDF o textarea aparece da seguinte forma (sem salto de linha):

abcdefghi

Pode ser que o iText não compreenda o comando “z\n”, mas também não mostra no arquivo PDF.

Talvez a solução seja transformar este textarea em um array, jogando cada linha para uma ocorrência e enviar linha a linha (ocorrência a ocorrência) para o iText.

Você sabe se isso é possível? Se for, como é que faço isso?

Abraços,

Augusto

PS. Apliquei a solução que você me enviou para testar o funcionamento, mas tive problemas para compilar o servlet com o seguinte código:

String MENSAGEM = req.getParameter("txtMSG"); . . out.println(MENSAGEM.replaceALL("\n", "<br>")); . .
Mas deu o seguinte erro:

Tab01003.java:171: cannot resolve symbol Symbol : method replaceALL(java.lang.String, java.lang.String) Location: class java.lang.String out.println(MENSAGEM.replaceALL("\n", "<br>"));[/code]

Desculpe, sempre que coloco o comando para saltar linha, o texto que tento te mostrar acaba realmente com o salto de linha. Espero que você compreenda.

Abraços

Editado pelo cv: consertei o post. Para mostrar qualquer coisa no GUJ que tenha uma barra () antes, é só colocar a barra duas vezes (por exemplo, “\n”).

Muito provalmente o iText nao considera
como sendo uma quebra valida para o documento mesmo… O mesmo vale para o HTML… se vc jgoar um texto com \n , ele nao ira quebrar as linhas, ja que quebra de linha em HTML eh <br>.

Em relacao ao outro problema, voce escreveu o nome do metodo errado - e a mensagem de erro diz isso… Voce usou replaceALL, mas o correto eh replaceAll

Rafael