[RESOLVIDO]JavaScript + JSP + HTML

6 respostas
J
Bom pessoal estou com um pequeno problema, como consigo chamar a tag JSP dentro dos meus td's sem ocasionar problemas?
function adicionarLinha()  
{  

	var local=document.getElementById('tabela2');  
   var tblBody = local.tBodies[0];  
   var newRow = tblBody.insertRow(-1);  
    
   var newCell0 = newRow.insertCell(0);  
 $teste = "aaaaaaaaa";
   newCell0.innerHTML = '<td> teste</td>';   
     
  var newCell1 = newRow.insertCell(1);  
  newCell1.innerHTML = '<td> teste </td>';    
  
var newCell2 = newRow.insertCell(2);  
newCell2.innerHTML = '<td>teste </td>'; 

var newCell3 = newRow.insertCell(3);

newCell3.innerHTML = '<td> teste </td>'; 


}
Tentei da seguinte forma:
var newCell3 = newRow.insertCell(3);

newCell3.innerHTML = '<td>'<%=pro.getNome()%> '</td>'; 


}
Porem não funciona, alguém tem alguma dica para usar a tag JSP nesse caso? OBS: essas linhas são adicionadas sempre que clico em um botão, com a tag JSP ela nem adiciona, porém quando faço da forma comum ( da forma que está no código completo ) ele funciona normalmente !

6 Respostas

fabiocortolan

Vc não vai conseguir inserir código JSP pelo Javascript, JSP é processado no servidor, javascript no cliente, já tive muitos problemas com isso e tive q encontrar várias soluções alternativas. No seu caso acredito q uma solução seja enviar o “nome” passado pelo “pro.getNome” via parâmetro. Não sei se a forma q vc implementou o código permite isso, mas é uma saída.

J

[EDITADO] Foram enviadas duas mensagens idênticas !

J

Bom , não tenho como testar agora, mas vc acredita que algo assim resolveria?

function adicionarLinha(nome)    
{    
  
    var local=document.getElementById('tabela2');    
   var tblBody = local.tBodies[0];    
   var newRow = tblBody.insertRow(-1);    
}
<input type="button" onclick="adicionaLinha(<%pro.getNome()%>)"

Ou algo como:

function adicionarLinha(nome)    
{    
  
    var local=document.getElementById('tabela2');    
   var tblBody = local.tBodies[0];    
   var newRow = tblBody.insertRow(-1);    
}
<input type="button" nome="<%pro.getNome()%>" onclick="adicionaLinha(nome)"

Poderia me explicar como chamar a variavel nome dentro dos tds? Eu posso fazer algo do gênero: '<td>' nome '</td>' ?

fabiocortolan

java.teen:

Poderia me explicar como chamar a variavel nome dentro dos tds? Eu posso fazer algo do gênero: '<td>' nome '</td>' ?

Só não esqueça de concatenar a variável:

J

Ok cara, vou testar logo trago resultados !

J
Bom resolvi usando Ajax:
function adicionarLinha()  
{  
	var quantidade=prompt("Digite a quantidade desejada: ","");
	alert(quantidade);
	var local=document.getElementById('tabela2');
	var prod = document.getElementById('teste').value;
    alert(prod);
    
	$.post("produto.jsp?codigo="+prod+"&quantidade="+quantidade,"", function(data){
		//alert(data);
		var dados = data.split(';');
		preco= quantidade*dados[1];
		//var linha = "<tr><td>" + prod + "</td><td>" + dados[0] + "</td><td>" + 1 + "</td><td>" + 2.00 + "</td></tr>";
		var linha= "<tr><td class='codigoprod'>"+prod+"</td><td class='nomeprod'>"+dados[0]+"</td><td class='quantidadeprod'>"+quantidade+"</td><td class='valorprod'>"+preco+"</td></tr>";
		local.innerHTML = local.innerHTML + linha;
         
         valor=document.getElementById('total').value;
         parseInt(valor);
         
		document.getElementById('total').value=parseFloat(valor)+parseFloat(preco);
		});
	  
   
}
A produto.jsp é essa:
<%@page import="java.util.Locale"%>
<%@page import="java.text.NumberFormat"%>
<%@ page language="java" contentType="text/html; charset=utf-8"
	pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@page import="dao.JDBCProdutoDAO"%>
<%@ page import="dao.FabricaConexao"%>
<%@ page import="java.sql.Connection"%>
<%@ page import="modelo.Produto;"%>
<%
java.util.List<Produto> produtos;
String codigo=request.getParameter("codigo");
String quantidade=request.getParameter("quantidade"); 
System.out.println("Quantidade  "+quantidade);
		System.out.println(codigo);
		FabricaConexao fabrica = new FabricaConexao();
		Connection conexao = fabrica.fazConexao();
		JDBCProdutoDAO dao = new JDBCProdutoDAO(conexao);
				produtos = dao.listar(codigo);
				
		
		for(Produto pro: produtos){	
		out.print(pro.getNome()+";"+pro.getValor());				
			 }
		int qtd_atual=dao.listarquantidade(codigo);
		int qtd_menos =Integer.parseInt(quantidade);
		int qtd_final = qtd_atual - qtd_menos;
		dao.alterar_quantidade(qtd_final, codigo);
		fabrica.fecharConexao();	 
			 %>
Criado 22 de maio de 2013
Ultima resposta 26 de mai. de 2013
Respostas 6
Participantes 2