Olá,
Estou fazendo uma tela onde devo buscar o nome de prestadores de serviço e exibir com autopreenchimento de combo box.
Baixei o dwr, testei buscando somente o nome e funcionou (uma lista somente com strings). Porém, preciso buscar nome e código, então alterei o código para setar na lista o objeto prestadorTO, que possui o código e o nome do prestador.
Estou com problemas ao tentar exibir os dados depois que comecei setar os objetos na lista.
Abaixo posto meu código:
dwr.xml
<!DOCTYPE dwr PUBLIC
"-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN"
"http://getahead.org/dwr/dwr20.dtd">
<dwr>
<allow>
<create creator="new" javascript="PrestadorService">
<param name="class" value="com.teste.prestador.PrestadorService"/>
<include method="buscaPrestadorPorNome"/>
<convert converter="bean" match="com.teste.prestador.PrestadorTO"/>
</create>
</allow>
</dwr>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>/jsp/index.jsp</welcome-file>
</welcome-file-list>
</web-app>
PrestadorTO
package com.teste.prestador;
public class PrestadorTO {
/** Código do Prestador (Médico) */
private String cdPrestador;
/** Nome do Prestador (Médico) */
private String nomePrestador;
public String getCdPrestador() {
return cdPrestador;
}
public void setCdPrestador(String cdPrestador) {
this.cdPrestador = cdPrestador;
}
public String getNomePrestador() {
return nomePrestador;
}
public void setNomePrestador(String nomePrestador) {
this.nomePrestador = nomePrestador;
}
}
PrestadorService.java
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.teste.prestador;
import java.util.ArrayList;
import java.util.List;
import org.apache.log4j.Logger;
/**
*
* @author mariane
*/
public class PrestadorService {
/**
* @author Mariane
* @date 08/01/2008
* @version 1.0
*
* @param nome Nome do Prestador
*
* @return listaPrestadores Lista de Prestadores
*
* @description
* Busca em vs_especialidade_endereco todos os prestadores cadastrados
*/
public List<PrestadorTO> buscaPrestadorPorNome(String nome){
List<PrestadorTO> listaPrestadores = new ArrayList();
PrestadorDAO prestadorDao = new PrestadorDAO();
listaPrestadores = prestadorDao.buscaPrestadorPorNome(nome);
return listaPrestadores;
}//buscaPrestadorPorNome
}
CadastrarVisita.jsp
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<head>
<script language="JavaScript" src="js/calendar1.js"></script>
<script language="JavaScript" src="js/calendar2.js"></script>
<script type='text/javascript' src='dwr/interface/PrestadorService.js'></script>
<script type='text/javascript' src='dwr/engine.js'></script>
<script type='text/javascript' src='dwr/util.js'></script>
<style type="text/css">
body { font-family: arial; font-size: 12px; }
div { padding-top: 10px; }
</style>
<script>
function $(id) {
return document.getElementById(id);
}
function buscaPrestador(nome) {
PrestadorService.buscaPrestadorPorNome(nome.toLowerCase(), preencheResultados);
}
function preencheResultados(nomes) {
var data = "";
data += "<select name='medicoSelect' id='teste' size=4>"
for (var i = 0; i < nomes.length; i++) {
data += "<option value='javascript:seleciona(\"" + nomes[i].nomePrestador + "\")' onclick='setaParametros(\"" + nomes[i].nomePrestador + "\", \"" + nomes[i].cdPrestador + "\")'>" + nomes[i].nomePrestador;
}
data += "</select>";
$("resultados").innerHTML = data;
}
function seleciona(nome) {
$("dtVisitaTxt").value = nome;
}
function setaParametros(nome, codigo) {
document.CadastraVisita.medicoTxt.value = nome;
document.CadastraVisita.codMedico.value = codigo;
document.CadastraVisita.medicoSelect.style.visibility='hidden';
}
</script>
</head>
<html>
<jsp:include page="cabecalho.jsp" flush="true" />
<body onLoad="MM_reloadPage(true); MM_preloadImages('imagens/site/estrutura_btn_cadastrarvisita2.jpg','imagens/site/estrutura_btn_consultavisita2.jpg','imagens/site/estrutura_btn_pesquisa2.jpg','imagens/site/estrutura_btn_sair2.jpg')">
<table width="100%" height="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td align="center" valign="top"><br>
<table border="0" cellpadding="0" cellspacing="0" width="778">
<jsp:include page="topo_pagina.jsp" flush="true" />
<tr>
<td align="left" style="padding:20px; vertical-align:top; background-color:#FFFFFF;">
<form name="CadastraVisita" method="post" action="CadastraVisitaServlet">
<input type="hidden" name="action">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="left" style="width:50%">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td style="width:40px">
<img >
</td>
<td class="arial22verdeEsc" style="width:478px">Cadastrar Visita</td>
<td align="right" class="arial22verdeEsc" style="width:220px">
<table width="4%" height="51" border="0" cellpadding="0" cellspacing="0" class="bordasimplesbranca">
<tr>
<td align="right" valign="middle" class="arial12verdeEsc" style="width:14%">
<a >
<img >
</a>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
<c:if test="${mensagem != null && mensagem != ''}">
<tr>
<td align="center" style="font-family:arial; font-size:13px; color:#009900; font-weight:bold;">
<c:out value="${mensagem}"/>
</td>
</tr>
<tr>
<td> </td>
</tr>
</c:if>
<tr>
<td align="center"><table width="100%" cellpadding="0" cellspacing="0" class="bordasimples">
<tr>
<td align="left" class="arial12verdeEsc" style="width:131px; height:33px;">Data da Visita: </td>
<td align="left" class="arial12cinzaEsc" style="width:605px; height:30px;">
<input type="text" name="dtVisitaTxt" value="<c:out value='${dtVisitaTxt}'/>" id="dtVisitaTxt" readonly="true" onClick="call.popup();">
<a >
<img >
</a>
</td>
</tr>
<tr>
<td align="left" class="arial12verdeEsc" style="height:33px;">Nome Médico:</td>
<td align="left" class="arial12cinzaEsc">
<input type="text" name="medicoTxt" id="medicoTxt" class="caixa3" size="63" onKeyUp="buscaPrestador(this.value)">
<input type="hidden" name="codMedico" id="codMedicoId">
</td>
</tr>
<tr>
<td align="left" class="arial12verdeEsc" style="height:33px;">Especialidade:</td>
<td align="left" class="arial12cinzaEsc">
<select name="especialidade" class="caixa3">
<option value=""> </option>
<c:forEach var="esp" items="${listaEspecialidades}">
<option value="${esp.codEspp}" ${(especialidade) == (esp.codEspp) ? 'selected':''}><c:out value="${esp.descricaoEspp}"/></option>
</c:forEach>
</select>
</td>
</tr>
<tr>
<td colspan="2" align="center" class="fundoTituloPesquisa" style="height:35px;">
<span class="arial18azul">Pesquisa</span>
</td>
</tr>
<tr>
<td colspan="2" align="left" class="arial12verdeEsc" style="height:80px;">
<table width="100%" border="0" cellpadding="0" cellspacing="0" class="bordasimplesbranca">
<tr>
<td class="arial12verdeEsc">4 - Quais veículos de comunicação que utiliza para obter as informações?</td>
</tr>
<tr>
<td><span class="arial12cinzaEsc">
<select name="comunicacao" class="caixa3">
<option> </option>
<c:forEach var="com" items="${listaComunicacao}">
<option value="${com.cdComunicacao}" ${(comunicacao) == (com.cdComunicacao) ? 'selected':''}><c:out value="${com.txComunicacao}"/></option>
</c:forEach>
</select>
</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" align="left" class="arial12verdeEsc" style="height:80px;">
<table width="100%" border="0" cellpadding="0" cellspacing="0" class="bordasimplesbranca">
<tr>
<td class="arial12verdeEsc">7 - Sugestões</td>
</tr>
<tr>
<td><label>
<textarea name="sugestoes" cols="138" rows="5" class="caixa3"><c:out value="${sugestoes}"/></textarea>
</label></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" align="left" class="arial12verdeEsc" style="height:80px;">
<table width="100%" border="0" cellpadding="0" cellspacing="0" class="bordasimplesbranca">
<tr>
<td class="arial12verdeEsc">8 - Elogios</td>
</tr>
<tr>
<td><textarea name="elogios" cols="138" rows="5" class="caixa3"><c:out value="${elogios}"/></textarea></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" align="left" class="arial12verdeEsc" style="height:80px;">
<table width="100%" border="0" cellpadding="0" cellspacing="0" class="bordasimplesbranca">
<tr>
<td class="arial12verdeEsc">9 - Não-conformidades</td>
</tr>
<tr>
<td><textarea name="naoConformidade" cols="138" rows="5" class="caixa3"><c:out value="${naoConformidade}"/></textarea></td>
</tr>
</table>
</td>
</tr>
</table>
<table width="100%" height="51" border="0" cellpadding="0" cellspacing="0" class="bordasimplesbranca">
<tr>
<td align="left" valign="middle" class="arial12verdeEsc" style="width:86%">
<a >
<img >
</a>
</td>
<td align="right" valign="middle" class="arial12verdeEsc" style="width:14%">
<a >
<img >
</a>
</td>
</tr>
</table>
<p> </p></td>
</tr>
</table>
</form>
</td>
<td>
<img />
</td>
</tr>
<jsp:include page="rodape.jsp" flush="true" />
</table></td>
</tr>
</table>
</body>
</html>
<script language="javaScript">
// specify form element as the only parameter (document.forms['formname'].elements['inputname']);
// note: you can have as many calendar objects as you need for your application
var call = new calendar1(CadastraVisita.dtVisitaTxt);
call.year_scroll = true;
call.time_comp = false;
</script>
Já testei a busca no banco de dados e está funcionando corretamente.
Na realidade, não estou conseguindo exibir os dados da lista com objetos PrestadorTO no jsp.
Será que alguém pode me ajudar?
Obrigada,
Mariane