Bom dia,
Sou iniciante em Java e estou desenvolvendo um projeto de conclusão de curso.
Estou com o seguinte problema. Tenho uma combo em um formulário de cadastro que contem uma lista de planos de saúde aceito. Quando preencho os dados do paciente ele salva todas as informações corretamente no banco, só que as informações vindas do select e grava em branco. Já alterei várias coisas mais o problema persiste.
Segue o código abaixo.
CLASSE DAO
[code]
public int criar(Paciente paciente) {
try {
Connection conexao = super.abrirConexao();
String insertSQL = “insert into PACIENTE (datacadastro, idpessoa, idplano_saude) VALUES (?, ?, ?) returning idpaciente”;
PreparedStatement ps = conexao.prepareStatement(insertSQL);
ps.setDate(1, new Date(new java.util.Date().getTime()));
ps.setInt(2, paciente.getIdPessoa());
if(paciente.getPlanosaude()!=null){
ps.setInt(3, paciente.getPlanosaude().getId());
} else {
ps.setObject(3, null);
}
ResultSet rs = ps.executeQuery();
if(rs.next()) {
return rs.getInt("idpaciente");
}
throw new RuntimeException("O cadastro do paciente nao foi criado.");
} catch (Exception ex) {
throw new RuntimeException("Erro ao criar paciente", ex);
} finally {
super.fecharConexao();
}
}
[code]
SERVLET
[code]
if(idplanosaude != null){
paciente.setPlanosaude(new PlanoSaude(Integer.valueOf(idplanosaude)));
}
if(id != null) {
paciente.setId(Integer.parseInt(id));
pacienteDao.atualizar(paciente);
} else {
pacienteDao.criar(paciente);
}
}
[code]
JSP
[code]
Plano de Saúde
Sem Plano de Saúde
<% for(PlanoSaude planosaude : planos) {
%> ><%=planosaude.getNome()%>
<% }
%>
[code]
Att
Primeiramente formata teu codigo usando as tags [code]
Se você esta com problemas porque seu sistema salva os dados em branco, o problema deve estar na tela de cadastro ou na sua servlet, tem como postar isso pra gente ver ?
A parte do servlet e da jsp referente ao select é essa:
SERVLET
[code]
if(idplanosaude != null){
paciente.setPlanosaude(new PlanoSaude(Integer.valueOf(idplanosaude)));
}
if(id != null) {
paciente.setId(Integer.parseInt(id));
pacienteDao.atualizar(paciente);
} else {
pacienteDao.criar(paciente);
}
}
[code]
JSP
[code]
Plano de Saúde
Sem Plano de Saúde
<% for(PlanoSaude planosaude : planos) {
%> ><%=planosaude.getNome()%>
<% }
%>
Devo postar o código inteiro ou só por essa parte dá pra ter uma ideia? Já alterei a classe DAO mas não fucionou.
Se eu setar a informação na mão diretamente no banco funciona.
[code]
poste o código todo, tentar adivinhar fica foda. outra coisa use o [/code] no fim do código
O código completo da jsp e da servlet estão assim:
SERVLET
package br.com.odontbasic.controle;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import br.com.odontbasic.exception.ValidacaoException;
import br.com.odontbasic.modelo.Paciente;
import br.com.odontbasic.modelo.Pessoa;
import br.com.odontbasic.modelo.PlanoSaude;
import br.com.odontbasic.modelo.dao.PacienteDao;
public class PacienteServlet extends PessoaServlet {
private static final long serialVersionUID = 1L;
void salvar(HttpServletRequest request, int idpessoa) throws ValidacaoException {
String id = request.getParameter("id");
String idplanosaude = request.getParameter("idplano_saude");
PacienteDao pacienteDao = new PacienteDao();
Paciente paciente = new Paciente();
paciente.setIdPessoa(idpessoa);
if(idplanosaude != null){
paciente.setPlanosaude(new PlanoSaude(Integer.valueOf(idplanosaude)));
}
if(id != null) {
paciente.setId(Integer.parseInt(id));
pacienteDao.atualizar(paciente);
} else {
pacienteDao.criar(paciente);
}
}
Pessoa editar(Integer id) {
if(id != null) {
PacienteDao pacienteDao = new PacienteDao();
return pacienteDao.obterPorId(id);
}
return null;
}
List<Pessoa> filtrar(Pessoa filtro) {
PacienteDao pacienteDao = new PacienteDao();
return pacienteDao.obterPorFiltro(filtro);
}
void carregarFiltrosRestantes(HttpServletRequest request, Pessoa filtro) {
Paciente paciente = (Paciente) filtro;
String id = request.getParameter("id");
if(id != null) {
paciente.setId(Integer.parseInt("0" + id));
}
}
@Override
Pessoa getPessoa() {
return new Paciente();
}
@Override
String getUrlFiltro() {
return "/admin/paciente/listar.jsp";
}
@Override
String getUrlListar() {
return "/admin/paciente/listar.jsp";
}
@Override
List<Pessoa> listar() {
PacienteDao pacienteDao = new PacienteDao();
return pacienteDao.obterTodos();
}
@Override
String getUrlEditar() {
return "/admin/paciente/editar.jsp";
}
@Override
String getUrlExibir() {
return "/admin/paciente/exibir.jsp";
}
}
JPS
<%@page import="br.com.odontbasic.utils.DateUtils"%>
<%@page import="br.com.odontbasic.modelo.Pessoa"%>
<%@page import="java.util.List"%>
<%@page import="br.com.odontbasic.modelo.Paciente"%>
<%@page import="br.com.odontbasic.modelo.Especializacao"%>
<%@page import="br.com.odontbasic.modelo.PlanoSaude"%><jsp:include page="/template/cabecalho.jsp" />
<%
Paciente pacienteEditado = (Paciente) request.getAttribute("pessoaEditada");
List<PlanoSaude> planos = (List) request.getAttribute("planos");
boolean alteracao = pacienteEditado != null;
%>
<form class="form-horizontal" method="post" action="<%=request.getContextPath()%>/admin/PacienteServlet">
<input id="acao" name="acao" value="SALVAR" type="hidden" />
<fieldset>
<legend>Manter Paciente</legend>
<% if(alteracao) { %>
<div class="control-group">
<label class="control-label" for="id">Código</label>
<div class="controls">
<input type="text" id="id" name="id" value="<%=pacienteEditado.getId()%>" readonly="" />
<input type="hidden" id="idpessoa" name="idpessoa" value="<%=pacienteEditado.getIdPessoa()%>" />
</div>
</div>
<% } %>
<div class="control-group">
<div class="input-append">
<label class="control-label" for="nome">Nome*</label>
<div class="controls">
<input type="text" id="nome" name="nome" maxlength="50" value="<%=alteracao ? pacienteEditado.getNome() : ""%>" placeholder="Nome do Paciente">
</div>
</div>
<div class="input-append">
<label class="control-label" for="cpf">CPF*</label>
<div class="controls">
<input type="text" id="cpf" name="cpf" maxlength="11" value="<%=alteracao ? pacienteEditado.getCpf() : ""%>" placeholder="CPF do Paciente">
</div>
</div>
</div>
<div class="control-group">
<div class="input-append">
<label class="control-label" for="rg">RG*</label>
<div class="controls">
<input type="text" id="rg" name="rg" maxlength="11" value="<%=alteracao ? pacienteEditado.getRg() : ""%>" placeholder="RG do Paciente">
</div>
</div>
<div class="input-append">
<label class="control-label" for="orgaoemissor">Orgão Emissor</label>
<div class="controls">
<input type="text" id="orgaoemissor" name="orgaoemissor" maxlength="11" value="<%=alteracao ? pacienteEditado.getOrgaoemissor() : ""%>" placeholder="Orgão Emissor">
</div>
</div>
</div>
<div class="control-group">
<div class="input-append">
<label class="control-label" for="endereco">Endereço*</label>
<div class="controls">
<input type="text" id="endereco" name="endereco" maxlength="30" value="<%=alteracao ? pacienteEditado.getEndereco() : ""%>" placeholder="Endereço do Paciente">
</div>
</div>
<div class="input-append">
<label class="control-label" for="numero">Número*</label>
<div class="controls">
<input type="text" id="numero" name="numero" maxlength="8" value="<%=alteracao ? pacienteEditado.getNumero() : ""%>" placeholder="Número da Residência">
</div>
</div>
</div>
<div class="control-group">
<div class="input-append">
<label class="control-label" for="complemento">Complemento*</label>
<div class="controls">
<input type="text" id="complemento" name="complemento" maxlength="15" value="<%=alteracao ? pacienteEditado.getComplemento() : ""%>" placeholder="Complemento da Residência">
</div>
</div>
<div class="input-append">
<label class="control-label" for="bairro">Bairro*</label>
<div class="controls">
<input type="text" id="bairro" name="bairro" maxlength="20" value="<%=alteracao ? pacienteEditado.getBairro() : ""%>" placeholder="Bairro da Residência">
</div>
</div>
</div>
<div class="control-group">
<div class="input-append">
<label class="control-label" for="cep">CEP*</label>
<div class="controls">
<input type="text" id="cep" name="cep" maxlength="8" value="<%=alteracao ? pacienteEditado.getCep() : ""%>" placeholder="CEP da Residência">
</div>
</div>
<div class="input-append">
<label class="control-label" for="municipio">Município</label>
<div class="controls">
<input type="text" id="municipio" name="municipio" maxlength="30" value="<%=alteracao ? pacienteEditado.getMunicipio() : ""%>" placeholder="Município da Residência">
</div>
</div>
</div>
<div class="control-group">
<div class="input-append">
<label class="control-label" for="estado">Estado*</label>
<div class="controls">
<input type="text" id="estado" name="estado" maxlength="11" value="<%=alteracao ? pacienteEditado.getEstado() : ""%>" placeholder="Estado da Residência">
</div>
</div>
<div class="input-append">
<label class="control-label" for="dataNasc">Data de Nascimento*</label>
<div class="controls">
<div class="input-append date" data-date-format="dd/mm/yyyy" data-date="<%=alteracao ? DateUtils.toString(pacienteEditado.getDataNasc(), "dd/MM/yyyy") : ""%>">
<input type="text" id="dataNasc" name="dataNasc" maxlength="10" readonly="" value="<%=alteracao ? DateUtils.toString(pacienteEditado.getDataNasc(), "dd/MM/yyyy") : ""%>" placeholder="Data de nascimento do Paciente">
<span class="add-on"><i class="icon-th"></i></span>
</div>
</div>
</div>
</div>
<div class="control-group">
<div class="input-append">
<label class="control-label" for="telefone">Telefone*</label>
<div class="controls">
<input type="text" id="telefone" name="telefone" maxlength="11" value="<%=alteracao ? pacienteEditado.getTelefone() : ""%>" placeholder="Telefone do Paciente">
</div>
</div>
<div class="input-append">
<label class="control-label" for="celular">Celular</label>
<div class="controls">
<input type="text" id="celular" name="celular" maxlength="11" value="<%=alteracao ? pacienteEditado.getCelular() : ""%>" placeholder="Celular do Paciente">
</div>
</div>
</div>
<div class="control-group">
<div class="input-append">
<label class="control-label" for="idplanosaude">Plano de Saúde</label>
<div class="controls">
<select id="idplanosaude" name="idplanosaude">
<option value="">Sem Plano de Saúde</option>
<% for(PlanoSaude planosaude : planos) {
%> <option value="<%=planosaude.getId()%>" <% if(alteracao && pacienteEditado.getPlanosaude().equals(planosaude)) out.print("selected"); %>><%=planosaude.getNome()%></option>
<% }
%> </select>
</div>
</div>
<div class="input-append">
<label class="control-label" for="email">Email</label>
<div class="controls">
<div class="input-append">
<input type="text" id="email" name="email" maxlength="20" value="<%=alteracao ? pacienteEditado.getEmail() : ""%>" placeholder="Email do Paciente">
</div>
</div>
</div>
</div>
</div>
<div class="control-group">
<div class="input-append">
<label class="control-label" for="ativo">Ativo</label>
<div class="controls">
<select id="ativo" name="ativo">
<option value="true" <% if(!alteracao || pacienteEditado.isAtivo()) out.print("selected"); %>>Sim</option>
<option value="false" <% if(alteracao && !pacienteEditado.isAtivo()) out.print("selected"); %>>Não</option>
</select>
</div>
</div>
</div>
<button type="submit" class="btn">Salvar</button>
<button type="button" class="btn" onclick="location.href='<%=request.getContextPath()%>/admin/PacienteServlet?acao=LISTAR'">Cancelar</button>
</fieldset>
</form>
<jsp:include page="/template/rodape.jsp" />