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 < e os > por > 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 < pre > 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 < blockquote > 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 < e >
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:
<c:out value="${blah}" escapeXml="false"/>
[]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);
}
- Define o código HTML para o sinal de menor que (<).
}[/code]
E na JSP teremos isso:
<display:column property="nmDescricao" title="Descriçã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);
}
- Define o código HTML para o sinal de menor que (<).
}[/code]
E na JSP teremos isso:
<display:column property="nmDescricao" title="Descrição"
decorator="br.gov.dataprev.corporativo.util.EscapeXMLColumnDecorator" />
Valeu pessoal,