Galera, estou desenvolvendo um projeto de uma locadora de veiculos para a faculdade e estou com dificuldade em uma parte.
Eu tenho uma página (cadastrarLocacao.jsp) onde eu tenho que informar o código do cliente e o código do veiculo para poder registrar a locação, porém eu estou querendo que ao invés do usuário digitar direto o código do cliente e veiculo, ele pudesse fazer uma pesquisa e selecionar esse cliente direto do formulário (por uma popup por exemplo). Alguém sabe como eu posso fazer isso?
Consegui abrir a popup e retornar o valor usando Window.open.
Tela que chama a popup
<!--Importando as taglibs--><%@tagliburi="http://java.sun.com/jsp/jstl/core"prefix="c"%><%@tagliburi="http://java.sun.com/jsp/jstl/fmt"prefix="fmt"%><!--Importando taglib personalizada--><%@taglibtagdir="/WEB-INF/tags"prefix="bruno"%><html><head><!--Definindo estilo CSS--><linktype="text/css"href="css/formulario.css"rel="stylesheet"/><linktype="text/css"href="css/jquery-ui-1.8.20.custom.css"rel="stylesheet"/><script>
varpopup;//AglobalvariablethatwillactasthePopupID
functionselecionarCliente(){
//Createthepopupandstorethereturningidinthevariablepopup=window.open("clienteSelecao.jsp","popup_id",
"scrollbars,resizable,width=800,height=400");
}
functionselecionarVeiculo(){
//Createthepopupandstorethereturningidinthevariablepopup=window.open("veiculoSelecao.jsp","popup_id",
"scrollbars,resizable,width=600,height=600");
}
</script><!--Importando java script jquery--><scripttype="text/javascript"src="js/jquery-1.7.2.min.js"></script><scripttype="text/javascript"src="js/jquery-ui-1.8.20.custom.min.js"></script><!--Corrigindo caracteres especiais--><metacontent="text/html; charset=ISO-8859-1"http-equiv="content-type"><title><fmt:messagekey="locacao.cadastrar.title"/></title></head><body><c:importurl="cabecalho.jsp"/><!--Inicio do FORM--><!--Action mvc esta declarado como atalho dentro de web.xml--><formaction="mvc"name="frm"><fieldset><legend><fmt:messagekey="locacao.cadastrar.title"/></legend><labelfor="txtCodigoCliente"><fmt:messagekey="locacao.codcliente"/></label><inputid="txtCodigoCliente"name="txtCodigoCliente"type="text"readonly="readonly"><inputtype="button"value="<fmt:message key="botao.selecionacliente"/>"onClick="selecionarCliente()">
<labelfor="txtNomeCliente"><fmt:messagekey="locacao.nomecliente"/></label><inputid="txtNomeCliente"name="txtNomeCliente"type="text"readonly="readonly"><br/><labelfor="txtCodigoVeiculo"><fmt:messagekey="locacao.codveiculo"/></label><inputid="txtCodigoVeiculo"name=txtCodigoVeiculotype="text"readonly="readonly"><inputtype="button"value="<fmt:message key="botao.selecionaveiculo"/>"onClick="selecionarVeiculo()">
<labelfor="txtNomeVeiculo"><fmt:messagekey="locacao.modveiculo"/></label><inputid="txtNomeVeiculo"name="txtNomeVeiculo"type="text"readonly="readonly"><br/><labelfor="txtDataLocacao"><fmt:messagekey="locacao.dataloc"/></label><bruno:campoDataid="txtDataLocacao"/><br/><labelfor="txtDataDevolucao"><fmt:messagekey="locacao.datadev"/></label><bruno:campoDataid="txtDataDevolucao"/><br/></fieldset><fieldset><legend><fmt:messagekey="locacao.opcionais"/></legend><label><fmt:messagekey="locacao.gps"/></label><labelfor="gpssim"class="label_normal"><fmt:messagekey="locacao.sim"/></label><inputid="gpssim"name="rbGps"value="S"type="radio"><labelfor="gpsnao"class="label_normal"><fmt:messagekey="locacao.nao"/></label><inputid="gpsnao"name="rbGps"value="N"type="radio"><br/><label><fmt:messagekey="locacao.bebe"/></label><labelfor="bebesim"class="label_normal"><fmt:messagekey="locacao.sim"/></label><inputid="bebesim"name="rbBebe"value="S"type="radio"><labelfor="bebenao"class="label_normal"><fmt:messagekey="locacao.nao"/></label><inputid="bebenao"name="rbBebe"value="N"type="radio"><br/><label><fmt:messagekey="locacao.motorista"/></label><labelfor="motoristasim"class="label_normal"><fmt:messagekey="locacao.sim"/></label><inputid="motoristasim"name="rbMotorista"value="S"type="radio"><labelfor="motoristanao"class="label_normal"><fmt:messagekey="locacao.nao"/></label><inputid="motoristanao"name="rbMotorista"value="N"type="radio"><br/></fieldset><!--Botão salvar executa o formulario--><inputvalue="<fmt:message key="botao.salvar"/>"type="submit">
<!--Atributo vai como invisivel para passar o parametro--><!--parametro logica define qual classe de controle será instanciada--><inputtype="hidden"name="logica"value="AdicionaLocacaoLogica"/><inputtype="hidden"name="estado"value="aberto"/></form><hr></hr><c:importurl="rodape.jsp"/></body></html>
Popup que retorna o valor:
<!doctype html><%@tagliburi="http://java.sun.com/jsp/jstl/fmt"prefix="fmt"%><html><head><!--Importa JSTL--><%@tagliburi="http://java.sun.com/jsp/jstl/core"prefix="c"%><!--Importa minhas tags--><%@taglibtagdir="/WEB-INF/tags"prefix="bruno"%><title><fmt:messagekey="cliente.selecao"/></title><!--Corrige problemas de leitura--><metacontent="text/html; charset=ISO-8859-1"http-equiv="content-type"><!--Carrega as Jquery's--><scriptsrc="js/jquery-1.7.2.min.js"></script><scriptsrc="js/jquery.tablesorter.min.js"></script><scriptsrc="js/jquery.tablesorter.pager.js"></script><scriptlanguage="Javascript"type="text/javascript">
functionputData(codigo,nome){
vardata1=codigo;
vardata2=nome;
window.opener.document.getElementById('txtCodigoCliente').value=data1;
window.opener.document.getElementById('txtNomeCliente').value=data2;
window.close();
}
</script><!--Estilo css da tabela--><linkrel="stylesheet"href="css/tabela.css"media="screen"/></head><body><!--Javabean para criar ClienteDAO--><jsp:useBeanid="dao"class="projeto.dao.ClienteDAO"/><labelfor="pesquisar"><fmt:messagekey="lista.pesquisar"/></label><inputtype="text"id="pesquisar"name="pesquisar"size="30"/><formname="frm"><tablecellspacing="0"summary="lista clientes"><thead><tr><th><fmt:messagekey="lista.codigo"/></th><th><fmt:messagekey="lista.nome"/></th><th><fmt:messagekey="lista.email"/></th><th><fmt:messagekey="lista.endereco"/></th><th><fmt:messagekey="lista.telefone"/></th><th><fmt:messagekey="lista.selecionar"/></th></tr></thead><tbody><!--loop que pega lista clientes e preenche tabela--><c:forEachvar="cliente"items="${dao.lista}"><tr><td>${cliente.codigo}</td><td>${cliente.nome}</td><!--Checa se tem e-mail--><td><c:iftest="${not empty cliente.email}"><ahref="mailto:${cliente.email}">${cliente.email}</a></c:if><c:iftest="${empty cliente.email}">E-mailnãoinformado
</c:if></td><td>${cliente.endereco}</td><td>${cliente.telefoneres}</td><td><inputtype="button"value="<fmt:message key="botao.selecionar"/>"onClick="putData('${cliente.codigo}','${cliente.nome}')"></td></tr></c:forEach></tbody></table></form><BR/><BR/><BR/><BR/><!--Barra de páginas--><divid="pager"class="pager"><form><span><fmt:messagekey="lista.exibir"/><selectclass="pagesize"><optionselected="selected"value="10">10</option><optionvalue="20">20</option><optionvalue="30">30</option><optionvalue="40">40</option></select><fmt:messagekey="lista.registros"/></span><imgsrc="imagens/first.png"class="first"/><imgsrc="imagens/prev.png"class="prev"/><inputtype="text"class="pagedisplay"/><imgsrc="imagens/next.png"class="next"/><imgsrc="imagens/last.png"class="last"/></form></div><!--Script da tabela bonita--><script>$(function(){
$('table>tbody>tr:odd').addClass('odd');
$('table>tbody>tr').hover(function(){
$(this).toggleClass('hover');
});
$('#pesquisar').keydown(function(){
varencontrou=false;
vartermo=$(this).val().toLowerCase();
$('table>tbody>tr').each(function(){
$(this).find('td').each(function(){
if($(this).text().toLowerCase().indexOf(termo)>-1)encontrou=true;
});
if(!encontrou)$(this).hide();
else$(this).show();
encontrou=false;
});
});
$("table").tablesorter().tablesorterPager({container:$("#pager")})
.bind('sortEnd',function(){
$('table>tbody>tr').removeClass('odd');
$('table>tbody>tr:odd').addClass('odd');
});
});
</script><br></br><br></br><br></br><br></br><!-- importando rorape--><c:importurl="rodape.jsp"/></body></html>
Esta meio ruim de ler, pois esta internacionalizado.