Como passar o valor de uma variável no JSP para outra no Javascript? – jsp
Pergunta:
Estou tentando definir o valor de uma variável dentro de uma tag script
com linguagem de expressão do JSP. Tentei assim para verificar se o valor não era vazio:
<c:if test="${!empty newsletter.id}">
<script>
$(function(){
alert("Entrou no 'if'");
})
</script>
</c:if>
E funcionou, o alert foi exibido normalmente (então o atributo newsletter.id
não está vazio). Tentei então definir o valor da variável assim:
<c:if test="${!empty newsletter.id}">
<script>
$(function(){
var foo = ${newsletter.content}; /* aqui... */
alert(foo);
});
</script>
</c:if>
E pronto, o alert parou de ser exibido. Até cheguei a pensar que era algo por causa da sintaxe ${...}
com a do jQuery $(...)
e tentei assim:
<c:if test="${!empty newsletter.id}">
<script>
var foo = ${newsletter.content}; /* tentei fora do document.ready(...) */
$(function(){
alert(foo);
});
</script>
</c:if>
Também não foi exibido o alert.
O problema está sendo na hora de atribuir o valor de newsletter.content
para a variável foo
no Javascript. Como eu faço para atribuir um valor de uma variável JSP à uma variável dentro da tag script
?
Autor da pergunta Renan
Resposta Renan:
var foo = '${newsletter.content}';
Ao colocar os apóstrofos, tudo o que estiver em newsetter.content
será colocado dentro de uma String. Na verdade você está usando Java para gerar código Javascript, então se o conteúdo de newsletter.content
fosse “olá mundo” por exemplo, da forma que estava iria gerar o seguinte código js:
var foo = olá mundo;
Agora com os apóstrofos o código gerado é:
var foo = 'olá mundo';