Boa tarde a todos.
Venho mais uma vez ao GUJ pois estou escontrando algumas dificuldades no desenvolvimento de um sistema web. Vamos lá!
Meu sistema possui um relacionamento N para N de duas tabela (MEDICO e ESPECIALIDADES), desse relacionamento surgiu uma terceira tabela (MEDICOESPECIALIDADE) com os campos (cpf e codigoEspecialidade) estou desenvolvemto em MVC. Para não criar uma JSp só para vincular o medico a especialidade eu usei 1 select multiple onde eu listo todas as especialidades na propria tela de medico.
Se o usuário do sistema digitar os dados do medico e selecionar as especialidades o sistema salva de boa. Gostaria de saber como faço para trazer as especialidades selecionadas (em azul) quando o usuario pesquisar por 1 médico.
segue o código abaixo
medico.jsp<%@ page language="java" contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<link rel="stylesheet" type="text/css" href="modelos/estilo.css">
<script type="text/javascript" src="modelos/validacao.js"></script>
<c:if test="${medico==null && medicoEspecialidade == null}">
<script language="javascript">window.location='medico.do'</script>
</c:if>
<title>SINTHOS - Sistema de Internações Hospitalares</title>
</head>
<body>
<div class="principal">
<div class="cabecalho"></div>
<div class="aba">
<a href="internacao.jsp"><img src="imagens/aba_cadastro1.png" border="0"></a><img src="imagens/aba_cadastro2.png"><a href="relatorios.jsp"><img src="imagens/aba_cadastro3.png" border="0"></a>
</div>
<div class="conteudo">
<br/>
<center>
<form name="formMedico" id="formMedico" method="post" action="medico.do">
<table>
<tr>
<td><font color="red">* </font>CPF: </td>
<td><input type="text" lang="1" name="cpf" id="cpf" class="dados" maxlength="14" onkeypress="return campoNumerico(event)" onkeyup="mascaraCpf(this,event)" value="${medico.cpf }"/></td>
<td><font color="red">* </font>CRM: </td>
<td><input type="text" lang="1" name="crm" id="crm" class="dados" maxlength="5" onkeypress="return campoNumerico(event)" value="${medico.crm }"/></td>
</tr>
<tr>
<td><font color="red">* </font>RG: </td>
<td><input type="text" lang="1" name="rg" id="rg" class="dados" maxlength="15" onchange="this.value=this.value.toUpperCase();" value="${medico.rg }"/></td>
<td><font color="red">* </font>Nome: </td>
<td><input type="text" lang="1" name="nome" id="nome" class="texto" maxlength="50" onchange="this.value=this.value.toUpperCase();" value="${medico.nome }"/></td>
</tr>
<tr>
<td><font color="red">* </font>Endereço: </td>
<td><input type="text" lang="1" name="endereco" id="endereco" class="texto" maxlength="50" onchange="this.value=this.value.toUpperCase();" value="${medico.endereco }"/></td>
<td><font color="red">* </font>Número: </td>
<td><input type="text" lang="1" name="numero" id="numero" class="dados" maxlength="10" onchange="this.value=this.value.toUpperCase();" value="${medico.numero }"/></td>
</tr>
<tr>
<td>Bairro: </td>
<td><input type="text" name="bairro" id="bairro" class="texto" maxlength="50" onchange="this.value=this.value.toUpperCase();" value="${medico.bairro }"/></td>
<td><font color="red">* </font>Cidade: </td>
<td><input type="text" lang="1" name="cidade" id="cidade" class="texto" maxlength="50" onchange="this.value=this.value.toUpperCase();" value="${medico.cidade }"/></td>
</tr>
<tr>
<td>CEP: </td>
<td><input type="text" name="cep" id="cep" class="dados" maxlength="9" onkeypress="return campoNumerico(event)" onkeyup="mascaraCep(this,event)" value="${medico.cep }"/></td>
<td><font color="red">* </font>Estado: </td>
<td><input type="text" lang="1" name="estado" id="estado" class="texto" maxlength="50" onchange="this.value=this.value.toUpperCase();" value="${medico.estado }"/></td>
</tr>
<tr>
<td>Telefone: </td>
<td><input type="text" name="telefone" id="telefone" class="dados" maxlength="13" onkeypress="return campoNumerico(event)" onkeyup="mascaraTelefone(this,event)" value="${medico.telefone }"/></td>
<td>Especialidades: </td>
<td>
<select name="especialidade" id="especialidade" multiple="multiple">
<c:forEach var="especialidade" items="${listaEspecialidade }">
<option value="${especialidade.codigoEspecialidade }">${especialidade.descricao }</option>
</c:forEach>
</select>
</td>
</tr>
</table>
<table>
<tr>
<td></td>
<td><font color="red">*</font> Campos Obrigatórios.</td>
</tr>
</table>
<br/>
<!--<img src="imagens/botaoAnterior.png"> <input type="text" name="navegar" id="navegar" size="4" disabled="disabled"/> <img src="imagens/botaoProximo.png"/>!-->
<table>
<tr>
<td>
<input type="submit" class="botao" name="acao" value="Salvar" onclick="return validaCampoObrigatorio(formMedico)"/>
<input type="submit" class="botao" name="acao" value="Excluir"/>
<input type="submit" class="botao" name="acao" value="Pesquisar"/>
<input type="submit" class="botao" name="acao" value="Limpar"/>
</td>
</tr>
</table>
</form>
</center>
</div>
<br/><br/><br/><br/><br/>
<a href="cadastros.jsp"><img src="imagens/botaoVoltar.png" border="0"/></a> <img align="right" src="imagens/medico.png"/>
<div class="rodape">Todos os Direitos Reservados - SINTHOS</div>
</div>
</body>
</html>
package sinthos.ctr;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import sinthos.bean.Especialidade;
import sinthos.bean.Medico;
import sinthos.bean.MedicoEspecialidade;
import sinthos.dao.EspecialidadeDAO;
import sinthos.dao.MedicoDAO;
import sinthos.dao.MedicoEspecialidadeDAO;
public class MedicoCTR extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
static final long serialVersionUID = 1L;
public MedicoCTR() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//Defini o tipo de resposta
response.setContentType("text/html");
response.setCharacterEncoding("ISO-8859-1");
//Passa nulo para o médico
Medico medico = new Medico();
request.setAttribute("medico", medico);
//Cria a lista de especialidades
EspecialidadeDAO daoEspecialidade = new EspecialidadeDAO();
List<Especialidade> listaEspecialidade = daoEspecialidade.getTodasEspecialidades();
request.setAttribute("listaEspecialidade", listaEspecialidade);
//Redireciona para tela
request.getRequestDispatcher("medico.jsp").forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//Defini o tipo de resposta
response.setContentType("text/html");
response.setCharacterEncoding("ISO-8859-1");
//Cria os objetos e variaveis
Medico medico = new Medico();
MedicoDAO daoMedico = new MedicoDAO();
MedicoEspecialidade medicoEspecialidade = new MedicoEspecialidade();
MedicoEspecialidadeDAO daoMedicoEspecialidade = new MedicoEspecialidadeDAO();
String acao = request.getParameter("acao");
//Cria a lista de especialidades
EspecialidadeDAO daoEspecialidade = new EspecialidadeDAO();
List<Especialidade> listaEspecialidade = daoEspecialidade.getTodasEspecialidades();
request.setAttribute("listaEspecialidade", listaEspecialidade);
//Recupera da tela
medico.setCpf(request.getParameter("cpf"));
medico.setCrm(request.getParameter("crm"));
medico.setRg(request.getParameter("rg"));
medico.setNome(request.getParameter("nome"));
medico.setEndereco(request.getParameter("endereco"));
medico.setNumero(request.getParameter("numero"));
medico.setBairro(request.getParameter("bairro"));
medico.setCidade(request.getParameter("cidade"));
medico.setCep(request.getParameter("cep"));
medico.setEstado(request.getParameter("estado"));
medico.setTelefone(request.getParameter("telefone"));
//Recupera as especialidades selecionadas
String[] especialidades = request.getParameterValues("especialidade");
//Recupera o cpf e guarda em MedicoEspecialidade
medicoEspecialidade.setCpf(request.getParameter("cpf"));
//Ação dos botões
if(acao.equals("Salvar")){
medico = daoMedico.salvarMedico(medico);
for(String especialidade : especialidades){
medicoEspecialidade.setCodigoEspecialidade(Integer.parseInt(especialidade));
medicoEspecialidade = daoMedicoEspecialidade.salvarMedicoEspecialidade(medicoEspecialidade);
}
if((medico == null) && (medicoEspecialidade == null)){
request.getRequestDispatcher("mensagemErro.jsp").forward(request, response);
}else{
request.getRequestDispatcher("mensagemOk.jsp").forward(request, response);
}
}else if(acao.equals("Excluir")){
for(String especialidade : especialidades){
medicoEspecialidade.setCodigoEspecialidade(Integer.parseInt(especialidade));
daoMedicoEspecialidade.excluirMedicoEspecialidade(medicoEspecialidade.getCpf(), medicoEspecialidade.getCodigoEspecialidade());
}
daoMedico.excluirMedico(medico.getCpf());
request.getRequestDispatcher("mensagemOk.jsp").forward(request, response);
}else if(acao.equals("Pesquisar")){
if(medico.getNome().equals("")){
medico = daoMedico.getMedicoPorCpf(medico.getCpf());
request.setAttribute("medico", medico);
request.getRequestDispatcher("medico.jsp").forward(request, response);
}else{
medico = daoMedico.getMedicoPorNome(medico.getNome());
request.setAttribute("medico", medico);
request.getRequestDispatcher("medico.jsp").forward(request, response);
}
}else{
request.getRequestDispatcher("medico.jsp").forward(request, response);
}
}
}
Aguém pode dar uma idéia do que fazer. Abraço!