[RESOLVIDO] Input value com aspas duplas

Como eu faço para ter aspas duplas dentro do value de um input?

<input value=" aqui dentro com aspas duplas ">

Achei falando em usar a barra inversa mas não funcionou assim.

<input value="    \"     ">

Estou usando velocity se tiver alguma coisa que de pra fazer por ele.

Se eu colocar aspas simples assim funciona.

<input value='   "    '> 

Mas ai não funciona colocas aspas simples dentro do value.

Tem como fazer funcionar para aspas simples e aspas duplas ao mesmo tempo?

Neste caso você vai precisar usar aqueles Escape Characters que no caso das aspas sao & #34; & quot;. (eu dei espaco depois de & pq senao o forum traduz)

Isso é uma coisa chata de se trabalhar com web. Acaba que, na minha opinião, antes de salvar alguma coisa no banco você precisa fazer o encode do texto para esses caracteres especiais. O bom e que torna sua aplicação um pouco mais segura uma vez que o usuário não consegue entrar com esses caracteres especiais para fazer alguma caca no seu banco de dados mas toda hora tem de fazer o encode e decode disso. Se estiver usando AJAX para fazer busca e envio de dados o proprio javascript tem funcoes para isso como

document.escape(string) e document.unescape(string);

Elieser, eu não lembrava disso.

Agora pra complicar um pouco mais eu tenho a saida assim:

E nessa descrição pode ter caracteres ’ e "
Tem alguma forma de converter seja no velocity ou mesmo no objeto ainda no código java?

[quote=Eliezer Reis]…Se estiver usando AJAX para fazer busca e envio de dados o proprio javascript tem funcoes para isso como

document.escape(string) e document.unescape(string);
[/quote]

Alias, eu fiz confusão em relaçao a isso. No javascript essas funcões não são para isso e neste caso você terá que procurar API de terceiros se não quiser trabaho.

[quote=luiscolling]Elieser, eu não lembrava disso.

Agora pra complicar um pouco mais eu tenho a saida assim:

E nessa descrição pode ter caracteres ’ e "
Tem alguma forma de converter seja no velocity ou mesmo no objeto ainda no código java?[/quote]

Então, é o que te falei. Existem algumas alternativas.

  • Se for banco de dados já salva no banco de dados com os caracteres de escape;
  • Pode-se fazer um taglib personalizada algo como
    <input value="<app:minhatag traduzir="$!obj.descricao"/>"/>

Procura ver se o JSTL já não tem isso

  • Se estiver usando ajax utilize alguma função javascript para traduzir

Essas são as opções que vejo!

Eliezer,

Obrigado pelas dicas.

Mas acabei fazendo assim:

<input value="$!obj.descricao.replaceAll('\"', '&quot;')" >

Isso não funciona para todos os casos somente aspas simples é duplas. Se tiver um sinal de + no texto ou de - isso não vai funcionar.

O certo seria fazer com JSTL mesmo. Assim:

&lt;%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%&gt;
&lt;%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %&gt;

&lt;html&gt;
	&lt;body&gt;
		&lt;c:set var="chars"&gt;& &lt; &gt; &quot; ' + - &lt;/c:set&gt;
		&lt;input value="&lt;c:out value="${chars}" /&gt;&quot;/&gt;
		&lt;input value="&lt;c:out value="${chars}" escapeXml="false" /&gt;&quot;/&gt;
	&lt;/body&gt;
&lt;/html&gt;

Eliezer,

Realmente a sua solução é mais completa, mas como não tem nem jstl aqui nesse projeto vou ficar substituindo somente " por & quot

<input value="$!obj.descricao.replaceAll(’"’, ‘& quot;’)" >

Mas é importante saber que tem essa solução que você mostrou.

Obrigado.