Struts popular o formbean para popular o JSP

1 resposta
S

Olá
quando executo o action e set o valor para meu formbean ele popula o jsp corretamente,
porem quando executo um METHODO no DAO para fazer a mesca coisa não funciona,
ou seja parece que o erro está na forma de popular o formbean no dao que não
está correto.

Alguem poderia me dizer o que esta errado ?

Action:
package org.apache.struts.webapp.validator;

import java.util.ArrayList;
import java.util.*;
import java.util.Locale;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.util.MessageResources;
import org.apache.struts.webapp.validator.CliForm;
import dao.ClienteDAO;
 


public final class AltDelNovoCliAction extends Action {


    private Log log = LogFactory.getFactory().getInstance(this.getClass().getName());
    public ActionForward execute(ActionMapping mapping,
                 ActionForm form,
                 HttpServletRequest request,
                 HttpServletResponse response)
    throws Exception {
    	

    // Extract attributes we will need
    HttpSession session = request.getSession();
    Locale locale = getLocale(request);
    MessageResources messages = getResources(request);
   
    CliForm bean = (CliForm)form;

   [color=red]  ///setando o value para o formbean fica ok. assim:
    //bean.setNome("Nome que vai ser populado no jsp para ser alterado " );

    //dessa forma não funciona
    //segue o DAO no final para ser examinado.
    ClienteDAO clidao = new ClienteDAO();
    ArrayList cliente = (ArrayList)   clidao.ConsultaClienteCodigo[/color]("4");    

    
    return mapping.findForward("success");        
    
    }

}
Dao:
public ArrayList  ConsultaClienteCodigo(String codigo){	 	        ArrayList pesquisa = new ArrayList();
                String SQL = "select nome from cliente where codigo = ? ";
  		PreparedStatement ps = null;  	        
		ResultSet rs = null;
		CliForm bean = null;

  	try {
		super.recuperaConexaoPool();
		ps = con.prepareStatement(SQL);
		ps.setString(1,codigo);
		rs = ps.executeQuery();
		while(rs.next()){
			[color=red]bean = new CliForm();
			bean.setNome(rs.getString(1));
                                                pesquisa.add(bean);
[/color]
	}
		
 		ps.close();
 		con.close();
 		
	} catch (Exception e) {
		System.err.println("Exception: " + e.getMessage());
	}

       return pesquisa	

  }

1 Resposta

R

Ola
kra o problema e que na action, o bean que vc esta recebendo como parâmetro ja esta salvo na sessão ou no request, e vc recebe ele como parametro no método execute, por isso funciona, no seu dao vc esta simplesmente instanceando um novo bean seta o valor nesse novo bean, e retorna o mesmo em um ArrayList e não faz nada com bean retornado.
vc tem que pegar o bean que esta sendo retornado para poder funcionar.
[]s
Daniel

Criado 5 de julho de 2005
Ultima resposta 5 de jul. de 2005
Respostas 1
Participantes 2