Como evitar que o browser interprete o conteúdo trazido do banco?

Olá,
Gostaria de saber uma forma de evitar que o browser interprete o conteúdo trazido do banco?
O usuário é livre pra digitar o que ele quiser numa caixa de texto, incluindo tags html.
Porém, ao trazer esses dados do banco, quero exibir ao usuário exatamente o que ele digitou:
Por Exemplo: Se ele gravou, “Teste”. Quero exibir “Teste” e não a palavra “Teste” grafada em Negrito?

Teste.

Uma das formas é você trocar, manualmente, os < por &lt; e os > por &gt; Isso dá trabalho mas não é difícil.
(É que mesmo usar <pre> não é suficiente. )

Teste

Caramba,
Não queria acreditar nisso!!!

Mas deve haver uma solução de responsabilidade do browser não?

Os caracteres > só fazem sentido pro browser.

Por exemplo, se o usuário digita: “Se a nota < 7”. Não necessariamente esse < deve ser transformado num < (que é um caractere de browser).

E mesmo que fosse um par de colchetes como em “3”. Ainda assim, não significaria a simples troca desses colchetes e envio ao banco. Supondo aplicações web/desktop compartilhando a mesma base. Não faria sentido enviar pro cliente swing algo como “& l t ;”.

Abraço,

Pô,

“Colchetes” foi foda! Favor substituir por “Sinais de Inequação”.

o HTML não tem uma tag especifica para NÃO renderizar tags HTML?

eu acho que vi isso em algum lugar… (claro que não lembro agora)

O tag &lt pre &gt evita que as linhas sejam automaticamente reformatadas e deixa a fonte do texto como mono-espaçada (ou seja, todas as letras têm a mesma largura, como em uma máquina de escrever), mas os tags continuam a ser interpretados.
O tag &lt blockquote &gt só serve para aumentar a margem esquerda.
Se você olhar aqui no "source" das páginas do GUJ vai ver que os sinais < e > foram todos substituídos por &lt; e &gt;

Olá,

Em Java ServerFaces quase todas as tags tem o atributo “escape”, que vem por default true, ou seja, componentes mostram caracteres tipo .

Não te ajuda?

Flws!
SChmidt

Dá uma pesquisada no Google sobre escape no Java, mas você poderia usar para contornar isso por exemplo:

&lt;c:out value="${blah}" escapeXml="false"/&gt;

[]s

Bom pessoal,

Estou muito grato pela pró-atividade de vocês.

Resumindo, a solução do Márcio é perfeita. Utilizar c:out com escapeXml=“true” na impressão dos textos.

Porém, ainda encontramos problemas com o display-tag. Na versão 1.1, a tag display:column também fornece o atributo escapeXml com a mesma semântica citada acima.

Porém, para a versão 1.0, precisamos criar este Column Decorator.

[code]import org.displaytag.decorator.ColumnDecorator;

/**

  • Essa classe é um Decorator que fornece escape para sinais de inequação:

  • “<” e “>”. Na prática, ela substitui os sinais por seus respectivos códigos

  • HTML: “<” e “>”.

  • Possibilita a exibição correta de tags XML, HTML e SCRIPT.

  • Criado em 10/04/2007.

  • @author Adilton Souza [adilton.souza@previdencia.gov.br]

  • @author Carlos Eduardo Freitas [carlos.eduardosilva@previdencia.gov.br]

  • @author Paulo de Tarso [paulo.gregorio@previdencia.gov.br]

  • @version 1.0
    */
    public class EscapeXMLColumnDecorator implements ColumnDecorator
    {

    /**

    • Define o código HTML para o sinal de menor que (<).
      */
      private static final String MENOR_QUE = “<”;

    /**

    • Define o código HTML para o sinal de maior que (>).
      */
      private static final String MAIOR_QUE = “>”;

    public EscapeXMLColumnDecorator()
    {
    }

    /**

    • Através desse método o DisplayTag busca a formatação correta do campo.
    • @return String representando o texto com escape de tags.
    • @param columnValue valor a ser reformatado
      */
      public final String decorate(final Object columnValue)
      {
      return columnValue.toString().replaceAll("<", MENOR_QUE)
      .replaceAll(">", MAIOR_QUE);
      }

}[/code]

E na JSP teremos isso:

<display:column property="nmDescricao" title="Descri&ccedil;&atilde;o" decorator="br.gov.dataprev.corporativo.util.EscapeXMLColumnDecorator" />

Valeu pessoal,

Bom pessoal,

Estou muito grato pela pró-atividade de vocês.

Resumindo, a solução do Márcio é perfeita. Utilizar c:out com escapeXml=“true” na impressão dos textos.

Porém, ainda encontramos problemas com o display-tag. Na versão 1.1, a tag display:column também fornece o atributo escapeXml com a mesma semântica citada acima.

Porém, para a versão 1.0, precisamos criar este Column Decorator.

[code]import org.displaytag.decorator.ColumnDecorator;

/**

  • Essa classe é um Decorator que fornece escape para sinais de inequação:

  • “<” e “>”. Na prática, ela substitui os sinais por seus respectivos códigos

  • HTML: “<” e “>”.

  • Possibilita a exibição correta de tags XML, HTML e SCRIPT.

  • Criado em 10/04/2007.

  • @author Adilton Souza [adilton.souza@previdencia.gov.br]

  • @author Carlos Eduardo Freitas [carlos.eduardosilva@previdencia.gov.br]

  • @author Paulo de Tarso [paulo.gregorio@previdencia.gov.br]

  • @version 1.0
    */
    public class EscapeXMLColumnDecorator implements ColumnDecorator
    {

    /**

    • Define o código HTML para o sinal de menor que (<).
      */
      private static final String MENOR_QUE = “<”;

    /**

    • Define o código HTML para o sinal de maior que (>).
      */
      private static final String MAIOR_QUE = “>”;

    public EscapeXMLColumnDecorator()
    {
    }

    /**

    • Através desse método o DisplayTag busca a formatação correta do campo.

    • @return String representando o texto com escape de tags.

    • @param columnValue valor a ser reformatado
      */
      public final String decorate(final Object columnValue)
      {
      if ( columnValue == null )
      {
      return null;
      }

      return columnValue.toString().replaceAll("<", MENOR_QUE)
      .replaceAll(">", MAIOR_QUE);
      }

}[/code]

E na JSP teremos isso:

<display:column property="nmDescricao" title="Descri&ccedil;&atilde;o" decorator="br.gov.dataprev.corporativo.util.EscapeXMLColumnDecorator" />

Valeu pessoal,