Boa tarde galera, gostaria de algumas ideias, tenho em minha app um pop que exibe os dados da busca do jsp usando jstl, minha duvida é como posso passar essa variavel que esta no jstl para um var no JS??
desde ja grato pela ajuda
Não passa.
JSTL roda no lado do servidor, enquanto a jsp é compilada. O JS roda do lado do cliente, após a renderização completa da página.
[quote=drsmachado]Não passa.
JSTL roda no lado do servidor, enquanto a jsp é compilada. O JS roda do lado do cliente, após a renderização completa da página.[/quote]
Pois é, de fato você esta certo no que diz respeito ao lado de que cada segmento é executado, porem devo descordar do fato de nao passar, uma solução bastante simples pode nos ajudar a fazer esta integração.
Para contextualizar e talvez ajudar alguem a ideia é + 0u _ assim
temos uma janela Principal que cria um popUp para que o usuario pesquise o produto, essa busca e enviada para um servlet e que por sua vez manda para o dao que retorna para o servlet que retorna para o jsp, o jsp faz um forEach para exibir os dados contidos na colecao devolvida pela servlet e, exibe a informação. o usuario por sua vez da um duplo clique no objeto que deseja fazer a alteracao ou remocao que é dispara a funcao de integração que nada mas é um forEach dentro do java script que cria uma varriavel d java script recebendo o JSTL, ao termino do forEach o window.opner… popula a tela principal com os dados contidos nas variaveis do javaScript…
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html >
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Pesquisa de produto</title>
<script type="text/javascript">
//para avisar a servlet qual sera a acao
function setar(acao){
var op=document.getElementById('objetivo').value=acao;
alert(op);
}
//responsavel pela criacao das variaveis javaScripts com os dados do JSTL,detalhe obvio mas vou citar mesmo assim e as " ou ' nas Strings do JSTL;
function integraca() {
<c:forEach var="listar" items="${listaDeProdutos}">
var codigo = ${listar.idProd};
var ipi= ${listar.ipi};
var codBarras= "${listar.codBarras}";
var nomeProd="${listar.nomeProd}";
var ia= ${listar.indicadorAtivacao};
var dtUltimaAlteracao="${listar.dtUltimaAlteracao}";
var dtUltimaCompra= "${listar.dtUltimaCompra}";
var dtCadastro="${listar.dtCadastro}";
var mkp=${listar.mkp};
var vlCompra=${listar.vlCompra};
var vlCusto=${listar.vlCusto};
var vlVenda=${listar.vlVenda};
var qntMinima=${listar.qntMinima};
var maxDesconto=${listar.maxDesconto};
var minDesconto=${listar.minDesconto};
</c:forEach>
parseFloat(vlVenda);
//responsavel por popular a tela principal com os dados nele contido
window.opener.document.getElementById('codigoProduto').value = codigo;
window.opener.document.getElementById('ipi').value = ipi;
window.opener.document.getElementById('codigoBarras').value=codBarras;
window.opener.document.getElementById('descricaoProd').value = nomeProd;
window.opener.document.getElementsByName('Ia').value = ia;
window.opener.document.getElementById('ultimaAlteracao').value = dtUltimaAlteracao;
window.opener.document.getElementById('ultimaCompra').value = dtUltimaCompra;
window.opener.document.getElementById('dataCadastro').value = dtCadastro;
window.opener.document.getElementById('mkp').value = mkp;
window.opener.document.getElementById('pCompra').value = vlCompra;
window.opener.document.getElementById('pCusto').value = vlCusto;
window.opener.document.getElementById('valorVenda').value = vlVenda;
window.opener.document.getElementById('qntMin').value = qntMinima;
window.opener.document.getElementById('offMin').value = minDesconto;
window.opener.document.getElementById('offMax').value = maxDesconto;
window.close(); //fecha a tela
}
</script>
</head>
<body>
//obtendo parametros do usario e enviado para servlet
<section id="dados">
<form action="../manterProduto" method="post" name="p">
<input type="hidden" id="objetivo" name="objetivo" value="">
<label for="id"> <input type="number" placeholder="Código " name="codigoPesquisa" id="cd"> </label>
<label for="produto"> <input type="text" placeholder="descrição" name="nomePesquisa"> </label>
<label for="preco"> <input type="number" placeholder="R$" name="valorPesquisa"> </label>
<input type="submit" value="Pesquisar" onclick="setar(value);" >
</form>
</section>
//responsavel pelo retorno da informacao
<section id="retornoDados">
//exibe a lista contida na colecao
<table>
<tr>
<td>Id do produto </td> <td>Descrição </td> <td>Preço</td>
//itero na colecao , ao duplo clique crio faço a integracao java script e JSTL
<c:forEach var="listar" items="${listaDeProdutos}">
<tr>
<td ondblclick="integraca();" >${listar.nomeProd}</td >
</tr>
</c:forEach>
</tr>
</table>
</section>
</body>
</html>
Pode nao ser a melhor maneira mas foi q que consegui. espero que ajude alguém…