Bom dia amigos,
Estou utilizando Struts 1.3.8 e tenho uma classe “SearchAction” que extende a Action, nesta classe existem algumas rotinas que fazem a inclusão, exclusão e consulta dos dados, através de actions.
Na action “CONSULTAR”, traz somente um unico registro, quando encontrado na base atarvés do parametro “Nome” que foi digidato no campo TEXT de um form na pagina principal, e mostra nos campos de um form na pagina “resulUsuario.jsp”.
Criei uma nova Action “LISTAR” no struts-config.xml que aponta para esta classe (SearchAction), e criei tb uma nova jsp “listaUsuario.jsp” onde queria que mostrasse todos os registros encontrados para um determinado paramentro (Ex: Na pagina principal, tenho um campo TEXT, onde digito o nome de usuario que quero pesquisar como por exemplo “Brasil” e depois clico no botao “LISTAR”, na base existem 3 registros que contém esta palavra no campo “nome_usuario”), quero criar uma rotina na classe “SearchAction” que consiga me retornar todos os registros encontrados com esta condição, que automaticamente vai setar para um ActionForward que vai listar esses 3 registros na “listaUsuario.jsp”. Como posso implementar isto amigos?
SearchAction:
package br.com.digidata.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.*;
import br.com.digidata.bean.SearchBean;
import br.com.digidata.paciente.*;
public class SearchAction extends Action{
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception {
System.out.println("*** SearchAction ***");
SearchBean sb = (SearchBean) form;
DAOPaciente daoPaciente = new DAOPaciente();
BeanPaciente beanPaciente = new BeanPaciente();
ActionMessages messages = new ActionMessages();
if (sb.getNome() == null || sb.getNome().trim().equals("")) {
ActionMessage error = new ActionMessage("error.paciente");
messages.add( ActionMessages.GLOBAL_MESSAGE, error );
saveErrors(request, messages);
return new ActionForward(mapping.getInput());
}
// Se opcao=1 Incluir - nao pode existir igual - para incluir bExist deve ser = false
// Se opcao=2 Consultar - tem que existir igual - para consultar bExist deve ser = true
// Verificar Nome no Banco
boolean bExist = daoPaciente.selectNomePacienteBoolean(sb.getNome());
// Popular BEANS só nestes casos :
// se for Incluir e Nao Existe no BD
if(sb.getOpcao().equals("INCLUIR") && !bExist) {
System.out.println("Vai Incluir e Nao Existe no BD");
beanPaciente.setNomPaciente(sb.getNome());
}
// se for Consultar e Existe no BD
if(sb.getOpcao().equals("CONSULTAR") && bExist) {
System.out.println("Vai Consultar e Existe no BD");
beanPaciente = daoPaciente.selectNomePaciente(sb.getNome());
System.out.println("apos populado no BD nome:"+beanPaciente.getNomPaciente());
System.out.println("apos populado no BD endereco:"+beanPaciente.getEndereco());
System.out.println("apos populado no BD complemento:"+beanPaciente.getComplemento());
}
// Lista todos que encontrar
if(sb.getOpcao().equals("LISTAR") && bExist) {
System.out.println("Vai Consultar e Existe no BD e lista todos que encontrar");
beanPaciente = daoPaciente.selectNomePaciente(sb.getNome());
}
// se for Incluir e Existe no BD
if(sb.getOpcao().equals("INCLUIR") && bExist) {
System.out.println("** Cliente já Cadastrado! **");
ActionMessage error = new ActionMessage("error.inclusao");
messages.add( ActionMessages.GLOBAL_MESSAGE, error );
saveErrors(request, messages);
return new ActionForward(mapping.getInput());
}
// se for Consultar e Não Existe no BD
if(sb.getOpcao().equals("CONSULTAR") && !bExist) {
System.out.println("** Cliente Inexistente para Alteração! **");
ActionMessage error = new ActionMessage("error.alteracao");
messages.add( ActionMessages.GLOBAL_MESSAGE, error );
saveErrors(request, messages);
return new ActionForward(mapping.getInput());
}
// Põe na sessão o resultado o beanPaciente Populado
request.setAttribute("beanPaciente", beanPaciente);
request.setAttribute("opcao", sb.getOpcao());
return mapping.findForward("success");
}
}
Muito obrigado.
Att;
Igor Franco