A minha duvida é a seguinte:
O codigo abaixo esta ok, mas para ele funcionar, o metodo deve ser chamar execute(…) , qndo eu mudo ele para listarPorCodigo, ai aparece o seguinte erro:
message DispatchMapping[/produtos] does not define a handler property
description The server encoutered an internal error(DispatchMapping [/produtos] does not define a handler property) that prevented it from fulfilling this request.
O q tenho q configurar no struts-config.xml para chamar o metodo listarPorCodigo ao inves de execute?
Abaixo segue os arquivos q estou usando:
struts-config.xml
<action path="/produtos" scope="request" name="produtosForm" validate="false" type="teste.ProdutoAction">
    <forward name="sucesso" path="/pages/produtos.jsp" />
</action>
ProdutoAction.java
public ActionForward execute(ActionMapping mapping, ActionForm form,
		HttpServletRequest request, HttServletResponse response) {
	int cod = Integer.parseInt(request.getParameter("cod"));
	Collection produtos = listar(cod);
	request.setAttribute("produtos", produtos);
	return mapping.findForward("sucesso");
	
}
         
        
          
        
           
           
           
         
         
            
            
          
       
      
        
        
          Você não pode simplesmente mudar o metodo e colocar o que você quiser, isso faz parte da API do Struts e você tem que obedece-la, se não o framework não funciona. Você tem que só sobrescrever o método.
Até existe um esquema de criar Inner Actions, igual tem no Mentawai, usando Struts, mas a configuração fica tão ruim que sinceramente, isso é quase inútil. Se está tentando colocar varias coisas na mesma action, ou você coloca tudo no método execute(), cria outra Action e esquece isso… ou usa um framework melhor.

         
        
        
           
           
           
         
         
            
            
          
       
      
        
        
          Mas eu ja vi diversos exemplos em q eles mudam o metodo para outro nome ao inves de execute…mas tipo assim, se eu mudar o nome para listar, o q tenho q mexer no struts-config.xml, para ele saber q é para acessar o metodo listar?
         
        
        
           
           
           
         
         
            
            
          
       
      
        
        
          No seu struts-config.xml:
<action .... parameter=metodo />
No seu ActionForm:
public class FormEu extends ActionForm{
   private String metodo;
  //get e set
}
No seu action:
public class ActionEu extends Action{
 public ActionForward meuNome(ActionMapping mapping, ActionForm form,
			HttpServletRequest req, HttpServletResponse res) throws   Exception {
    return null; // retorna algo melhor :)
}
}
No seu jsp:
<form....>
<input type="text" name="metodo" value="meuNome" />
Entendeu?
Vc tem que identificar lah no seu xml, qual a String que armazenará o nome do metodo chamado, coloca esse atributo no form, seta o valor do form no jsp e dê o submit.
Ao executar  ele entra automaticamente no método informado.
         
        
        
           
           
           
         
         
            
            
          
       
      
        
        
          Não falei, a configuração do struts é sinistra…
Ainda bem que já foi-se!
         
        
        
           
           
           
         
         
            
            
          
       
      
        
        
          sim, eh possível utilizar o método q vc quiser, inclusive ter uma Action que contenha varios métodos que tenham algo em comum, para fazer sentido estarem na mesma classe…
o lance eh q a sua Action vai ter q extender ActionDispatcher
http://struts.apache.org/1.x/apidocs/index.html e não mais Action…eh la no struts-config, vc vai atribuir um parametro a mais, q sera o “method” aih vc vai mapear qual método vc quer q seja executado…
se eu nao me engano eh assim, eu num tenho nenhum exemplo aqui, se eu conseguir eu posto…
flw