Olá galera,
Estou com um problema, tenho uma pagina cadastraCliente.jsp nessa pagina tenho um que é populado pelo banco com cidades Ex. Porto Alegre, Rio de Janeiro etc…
Em minha estrutura MVC tenho um Comando para instanciar um novo objeto e setar os atributos do mesmo.
Ao recuperar e setar o atributo ele carrega somente a primeira String Ex. Porto Alegre ta retornando Porto, Rio de Janeiro retorna Rio…
objCandidato.setCidade(parametros.get(“selectCidade”)[0]);// Aqui está retornando somente a primeira String da Cidade…
Alguém tem alguma luz?
Grato…
Marciano
Opa.
Eu já consigo imaginar seu problema, mas antes queria ver seu código pra ter certeza do que você está fazendo.
Por exemplo. Do que se trata parametros
Como vc está trabalhando com parametros ?
como é o objCandidato ?
EDIT porque eu tinha confundido seu projeto =p
Opa, abaixo segue minha classe que envia para o Banco o objetoCandidato com os atributados setados…
Valeu!
public class ComandoInsereCandidato extends ComandoAbstrato{
public Object execute(Map<String, String[]> parametros) throws Exception {
System.out.println("ComandoInsereCandidato");
Candidato objCandidato = new Candidato();
objCandidato.setNome(parametros.get("txtNome")[0]);
objCandidato.setEmail(parametros.get("txtEmail")[0]);
objCandidato.setFone(parametros.get("txtFone")[0]);
objCandidato.setCpf(Long.parseLong(parametros.get("txtCpf")[0]));
objCandidato.setTipo(parametros.get("txtTipo")[0]);
objCandidato.setEndereco(parametros.get("txtEndereco")[0]);
objCandidato.setCidade(parametros.get("txtCidade")[0]);
objCandidato.setCep(parametros.get("txtCep")[0]);
objCandidato.setUf(parametros.get("txtUf")[0]);
objCandidato.setSenha(parametros.get("txtSenha")[0]);
// insere o objeto no banco
dao.connect();
dao.insereCandidato(objCandidato);
dao.disconnect();
return true;
}
}
Amigo,
1 - Leia esse tópico antes. E seja bem vindo ao GUJ: LEIA
2 - O mais importante é: Como você está atribuindo valores ao Map parametros?
Enquanto vai lendo, eu leio seu código.
Valeu cara foi mals…da próxima vez já posto dentro dos padrões…
Cara,
Os parametros vem dos campos txt e select da pagina JSP.
Tipo: Tudo que recebo através de input do tipo text vem normal. O problema é quando recebo de algum select.
Dá pra Editar seu post. Clica em EDIT e conserta, pois sua dúvida pode ser a dúvida de outros que acessarem seu post, e vai ficar mais fácil pra ler seu código né.
Vamos lá, como está inserindo no Map paramentros? Acho que aí está a raiz do seu problema.
Bom vamos lá:
Tenho meu insereCandidatoForm.jsp conforme abaixo:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@page import="java.util.ArrayList"%>
<%@page import="com.senacrs.locadora.negocio.Candidato"%>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script language="javascript" type="text/javascript" src="niceforms.js"></script>
<link rel="stylesheet" type="text/css" media="all" href="niceforms-default.css" />
</head>
<%Candidato candidato = (Candidato) request.getAttribute("resultado");
%>
<body><div id="container">
<form name='formulario' action='Controller' method="get" class="niceform" onSubmit="return validaFormCandidato()">
<fieldset>
<legend>Cadastro de novo Usuário/Candidato</legend>
<dl>
<dt><label for="nome">
<input type='hidden' name = 'do' value='insereCandidato'/>
<input type='hidden' name = 'txtTipo' value='C'/>
<div align="right"><strong>Nome:(*)</strong></div>
</label></dt>
<dd><input type="text" name='txtNome' id="nome" size="32" maxlength="128" /></dd>
</dl>
<dl>
<dt><label for="email">
<div align="right"><strong>Email:(*)</strong></div>
</label></dt>
<dd><input type="text" name='txtEmail'id="email" size="32" maxlength="128" onkeyup="checkEmail(this);"/></dd>
</dl>
<dl>
<dt><label for="cpf">
<div align="right"><strong>Cpf:(*)</strong></div>
</label></dt>
<dd><input type="text" name='txtCpf' id="cpf" size="32" maxlength="128" /></dd>
</dl>
<dl>
<dt><label for="fone">
<div align="right"><strong>Fone:</strong></div>
</label></dt>
<dd><input type="text" name='txtFone' id="fone" size="32" maxlength="128" /></dd>
</dl>
<dl>
<dt><label for="endereco">
<div align="right"><strong>Endereço:(*)</strong></div>
</label></dt>
<dd><input type="text" name='txtEndereco' id="email" size="32" maxlength="128" /></dd>
</dl>
<dl>
<dt><label for="cidade">
<div align="right"><strong>Cidade:</strong></div>
</label></dt>
<dd> <select name='txtCidade'>
<% for (String sCidade : candidato.getListaCidades()) { %>
<option value=<% out.print(sCidade); %>
><% out.print(sCidade); %></option>
<% } %>
</select></dd>
</dl>
<dl>
<dt><label for="cep">
<div align="right"><strong>Cep:</strong></div>
</label></dt>
<dd><input type="text" name='txtCep' id="cep" size="32" maxlength="128" /></dd>
</dl>
<dl>
<dt><label for="uf">
<div align="right"><strong>Estado:</strong></div>
</label></dt>
<dd><select name='txtUf'><option value="IN">Selecione</option>
<option value="RS">RS</option>
<option value="SP">SP</option>
<option value="MG">MG</option>
</select></dd>
</dl>
<dl>
<dt><label for="senha">
<div align="right"><strong>Senha(*)</strong></div>
</label></dt>
<dd><input type="password" name='txtSenha' id="senha" size="32" maxlength="128" /></dd>
</dl>
</fieldset>
<fieldset class="action">
<input type="submit" name="btnEnviar" id="button" value="Cadastrar" />
</fieldset>
</form>
</div></body>
</html>
O action desse form me leva para meu Controlador que por sua vez faz executar o comando abaixo:
import java.util.Map;
import com.senacrs.locadora.negocio.Candidato;
public class ComandoInsereCandidato extends ComandoAbstrato{
public Object execute(Map<String, String[]> parametros) throws Exception {
System.out.println("ComandoInsereCandidato");
Candidato objCandidato = new Candidato();
objCandidato.setNome(parametros.get("txtNome")[0]);
objCandidato.setEmail(parametros.get("txtEmail")[0]);
objCandidato.setFone(parametros.get("txtFone")[0]);
objCandidato.setCpf(Long.parseLong(parametros.get("txtCpf")[0]));
objCandidato.setTipo(parametros.get("txtTipo")[0]);
objCandidato.setEndereco(parametros.get("txtEndereco")[0]);
objCandidato.setCidade(parametros.get("txtCidade")[0]);
objCandidato.setCep(parametros.get("txtCep")[0]);
objCandidato.setUf(parametros.get("txtUf")[0]);
objCandidato.setSenha(parametros.get("txtSenha")[0]);
// insere o objeto no banco
dao.connect();
dao.insereCandidato(objCandidato);
dao.disconnect();
return true;
}
}
Essa classe extende comando abastrato abaixo:
import java.util.Map;
import com.senacrs.locadora.banco.DAOFactory;
import com.senacrs.locadora.banco.IBanco;
public abstract class ComandoAbstrato {
// pagina que será apresentada quando um comando for bem executado
private String paginaSucesso;
//atributo DAO )data access object)
// valido nas subclasses
protected IBanco dao;
/**
* este método abstrato padroniza as chamadas que o controlaador
* fara para os comandos concretos
*/
public abstract Object execute(Map<String, String[]> parametros) throws Exception;
// contrutor
public ComandoAbstrato(){
DAOFactory fabrica = DAOFactory.selecionaFonte(DAOFactory.MYSQL);
this.dao = fabrica.criaDAO();
}
public String getPaginaSucesso() {
return paginaSucesso;
}
public void setPaginaSucesso(String paginaSucesso) {
this.paginaSucesso = paginaSucesso;
}
}
Você ainda não postou como vc está inserindo os valores no Map parametros.
Vc só mostrou os parametros.get(“chaves”)
Onde vc dá os parametros.set() ?
Observe bem. Se no select o texto Porto Alegre aparece completo, até aí tudo bem. Quem pega esses valores do select? o Map parametros? Como está sendo inserido?
Eu ainda não consegui enxergar seu problema, mas acho que está nessa hora aí, de setar os valores no Map.