Erro Struts: método execute()

6 respostas
gabrielmassote

Tudo bem pessoal?

comecei a implementar uma aplicação aqui utilizando struts só que está dando um erro.

javax.servlet.ServletException: java.lang.NoSuchMethodException: br.com.jiptv.controller.EmissoraAction.execute() org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:515) org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:419)

e minha classe EmissoraAction está assim:

import java.util.*;

import org.apache.struts.action.*;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import br.com.jiptv.model.*;

public class EmissoraAction extends Action  {

	private static final long serialVersionUID = 1L;
	private final String SUCCESS = "SUCCESS";
	private final String FAILURE = "FAILURE";
		
	@Override
	public ActionForward execute(ActionMapping mapping, 
	        ActionForm form, HttpServletRequest request, 
	        HttpServletResponse response) throws Exception{
		
		
		List<EmissoraBean> emissoras = null;
        ActionMessages errors = new ActionMessages();
        try {
            EmissoraDao emissoraDao = new EmissoraDao();
            emissoras = emissoraDao.getEmissoras();
            request.setAttribute("listaEmissoras", emissoras);
        }
        catch (Exception e) {
            errors.add(ActionMessages.GLOBAL_MESSAGE, 
                new ActionMessage("error.emissora.list"));
            getServlet().log("Erro carregando a lista de emissoras", e);
        }
        if (!errors.isEmpty()) {
            saveErrors(request, errors);
            return (mapping.findForward(this.FAILURE));
        }
        else {
            return (mapping.findForward(this.SUCCESS));
        }
			
	}
			

}

Observação:
Quando coloco o método execute da seguinte maneira, ele executa tranquilo.

public String execute() {
		return "SUCCESS";
	}

se alguem puder me ajudar, ficarei grato. Caso precisem de mais informações sobre código só me pedirem.
Abraco a todos.

6 Respostas

Rafael_Carneiro

Você está utilizando qual versão do Struts?

gabrielmassote

Estou com a versão 1.3.5…

será que é isso?

Rafael_Carneiro
gabrielmassote:
Estou com a versão 1.3.5...

será que é isso?

Segundo o seu erro:

# javax.servlet.ServletException: java.lang.NoSuchMethodException: br.com.jiptv.controller.EmissoraAction.execute()  
#     org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:515)  
#     org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:419)

Você está utilizando o Struts2:

org.apache.struts2.dispatcher.Dispatche

gabrielmassote

concordo.

quebrei a cabeça aqui, eu tava utilizando o Struts 2. Agora to migrando pro 1.3.5 e to apanhando nos xml de configuração.

E outra, no Struts 2 não tem o suporte para o seguinte método execute?

public ActionForward execute(ActionMapping mapping,   
            ActionForm form, HttpServletRequest request,   
            HttpServletResponse response) throws Exception{  ... }
gabrielmassote

Pessoal,

consegui resolver esse problema do execute, mas só que agora parece que os dados não estão indo pelo request e nao consigo nem adicionar ( nao chegando nada no form ) e nem listar ( com algum List ).

abraco

LeandroMedeiros

No Struts 2, se você tiver os métodos getters para cada atributo com o mesmo nome que estão na JSP, basta você extender sua action de ActionSupport que os atributos são preenchidos pelo próprio Struts, assim você consegue trabalhar com eles na action. Ex.:

action

public class cadastroAction extends ActionSupport {
     
    private String nome;

    

    public String getNome(){
        return this.nome;
    }

}

JSP

<s:textfield name="nome" />

Qualquer dúvida é só falar, fiz um projeto com Struts 2 passei por estas dificuldades no início, mas garanto que ele é muito bom.

Uma ótima referência para Struts 2 é o site http://www.roseindia.net/struts/struts2

Criado 14 de dezembro de 2008
Ultima resposta 15 de dez. de 2008
Respostas 6
Participantes 3