Duvida em atribuir valores a um objeto

9 respostas
brunorota

Olá galera

Estou com um dúvida

E procurei no google não encontrei algo parecido com o que eu preciso

Ex:

public class ContatoDAO(){

      public Contato getContato(long id){
       . . .
       return contato;
      }
}
public class Contato(){}

altera-contato.jsp

<jsp:useBean id="dao" class="br.com.caelum.dao.ContatoDAO"></jsp:useBean>
 <jsp:useBean id="contato" class="br.com.caelum.modelo.Contato"></jsp:useBean>

Como eu faço pra adicionar no objeto contato, o objeto que o metodo getContato retorna

Eu tentei assim só que não deu certo

${contato} = ${dao.contato(1)}

Como eu poderia fazer isso?

Atenciosamente

9 Respostas

bruno.leite

http://java.sun.com/products/jsp/tags/syntaxref.fm13.html

brunorota

Eu olhei e pelo que eu entendi

Fiz assim, não da erro mais também quando eu tento vizualizar o dado não acontece nada =/

<html>
          <body>
                      
                <jsp:useBean id="contato" class="br.com.caelum.modelo.Contato"></jsp:useBean>
		
		
		<c:set var="contato.nome" value="Bruno" />
		
		${contato.nome}            

          </body>


</html>

O que eu estou fazendo de errado =/

bruno.leite

tente a jsp:setProperty

brunorota

Opa valeu ^^

Eu tinha tentado antes mais nao tinha dado certo

Tava dando erro pq eu tava colocando o nome errado :S

Agora surgiu outra dúvida

Eu tenho uma classe dao, ContatoDAO que tem o método getContato(long id){ return contato} ele retorna um objeto contato

Com esse setProperty eu consigo passar o objeto que o contatoDao retorna e instanciar no meu objeto Contato?

bruno.leite

kra, naum é uma boa vc fazer seu view comunicar com seu DAO não, leia sobre MVC…

E eu não entendi sua pergunta: “Com esse setProperty eu consigo passar o objeto que o contatoDao retorna e instanciar no meu objeto Contato?”

brunorota

É você falando agora me veio outra lógica na cabeça

Chamar um servlet e fazer isso no servlet e depois eu chamar a JSP

mas oq eu queria era o seguinte

Eu tenho uma classe ContatoDAO que tem um metodo getContato(long id) que retorna um objeto Contato

Eu tenho a classe Contato

entao

<jsp:useBean id="dao" class="br.com.caelum.dao.ContatoDAO"></jsp:useBean>  
<jsp:useBean id="contato" class="br.com.caelum.modelo.Contato"></jsp:useBean>

Aqui eu tenho o objeto dao e o objeto contato, no objeto dao ele tem um metodo que retorna um objeto contato

Eu quero passar os valores do objeto que o metodo do objeto dao retorna para o objeto contato

Acho q agora eu fui mais claro =P

brunorota

Só que eu passando pro servlet fazer isso eu encontro o seguinte problema

No projeto eu criei um ControlerServlet que dependendo do parâmetro que ele recebe ele chama a servlet indicada

segue o código

public class ControllerServlet extends HttpServlet{
	
	@Override
	protected void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		
		String parametro = request.getParameter("logica");
		String nomeDaClasse = "br.com.caelum.mvc.logica." + parametro;
		
		try{
			
			Class classe = Class.forName(nomeDaClasse);
			
			Logica logica = (Logica) classe.newInstance();
			logica.executa(request, response);
			
		}catch(Exception e){
			throw new ServletException("A lógica de negócios causou um exceção", e);
		}
		
	}

}

Eu sempre chamo alguma servlet por um botão submit, desse jeito:

<form action="mvc" method="POST">           
            
            <input type="hidden" name="logica" value="AdicionaContatoLogic" />
            <input type="submit" value="Gravar" />

        </form>

Pela essa linha eu passo o nome da servlet que vai ser chamada pelo ControlerServlet

<input type="hidden" name="logica" value="AdicionaContatoLogic" />

Como eu faço pra chamar essa servlet passando esse parâmetro para ControlerServlet através de um link href?

jamesfrj

Fala, fera!

Eu estava com um problema parecido com o seu. Não estava conseguindo obter os dados do Contato escolhido pelo usuário no JSP. Descobri que a forma de resolver seria dentro da lógica MostraContatoLogic que seria chamada pela lista de contatos:
<td><a href="mvc?logica=MostraContatoLogic&id=${contato.id}">Editar</a></td>
Resolvi, dentro dessa lógica, anexando na requisição o bean Contato, obtido no método getContato(long id) do ContatoDAO:
public class MostraContatoLogic implements Logica {
	@Override
	public String executa(HttpServletRequest req, HttpServletResponse res)
			throws Exception {
		req.setAttribute("contato", new ContatoDAO().getContato((long)Integer.parseInt(req.getParameter("id"))));				
		return "/teste-altera-mvc.jsp";
	}
}
Dessa forma, quando depois acessei pelo JSP, os dados do Contato puderam ser acessados diretamente, pois já estavam anexados ao corpo da requisição.
<form action="mvc" method="post">
		Id:			<input type="text" name="id" readonly="readonly" value="${contato.id}" /><br />
		Nome:		<input type="text" name="nome" value="${contato.nome}"/> <br />
		E-mail:		<input type="text" name="email" value="${contato.email}"/> <br />
		Endereço:	<input type="text" name="endereco" value="${contato.endereco}"/> <br />
		Data de Nascimento: <input type="text" name="dataNascimento" value="<fmt:formatDate value="${contato.dataNascimento.time}" pattern="dd/MM/yyyy"/>" /> 
		<input type="hidden" name="logica" value="AlteraContatoLogic" />
		<input type="submit" value="Enviar"/>		
</form>
Os mais antigos por favor me corrijam, caso eu tenha dito algo incorreto.

Espero ter ajudado.

Abraços

jamesfrj

Fala, fera!

Eu estava com um problema parecido com o seu. Não estava conseguindo obter os dados do Contato escolhido pelo usuário no JSP. Descobri que a forma de resolver seria dentro da lógica MostraContatoLogic que seria chamada pela lista de contatos:
<td><a href="mvc?logica=MostraContatoLogic&id=${contato.id}">Editar</a></td>
Resolvi, dentro dessa lógica, anexando na requisição o bean Contato, obtido no método getContato(long id) do ContatoDAO:
public class MostraContatoLogic implements Logica {

	@Override
	public String executa(HttpServletRequest req, HttpServletResponse res)
			throws Exception {
		req.setAttribute("contato", new ContatoDAO().getContato((long)Integer.parseInt(req.getParameter("id"))));				
		return "/teste-altera-mvc.jsp";
	}
	
}
Dessa forma, quando depois acessei pelo JSP, os dados do Contato puderam ser acessados diretamente, pois já estavam anexados ao corpo da requisição.
<form action="mvc" method="post">
		Id:			<input type="text" name="id" readonly="readonly" value="${contato.id}" /><br />
		Nome:		<input type="text" name="nome" value="${contato.nome}"/> <br />
		E-mail:		<input type="text" name="email" value="${contato.email}"/> <br />
		Endereço:	<input type="text" name="endereco" value="${contato.endereco}"/> <br />
		Data de Nascimento: <input type="text" name="dataNascimento" value="<fmt:formatDate value="${contato.dataNascimento.time}" pattern="dd/MM/yyyy"/>" /> 
		<input type="hidden" name="logica" value="AlteraContatoLogic" />
		<input type="submit" value="Enviar"/>		
</form>
Os mais antigos por favor me corrijam, caso eu tenha dito algo incorreto.

Espero ter ajudado.

Abraços

Criado 26 de março de 2010
Ultima resposta 15 de mar. de 2012
Respostas 9
Participantes 3