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('\"', '"')" >
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:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<body>
<c:set var="chars">& < > " ' + - </c:set>
<input value="<c:out value="${chars}" />"/>
<input value="<c:out value="${chars}" escapeXml="false" />"/>
</body>
</html>
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.