método execute do Struts

Rapazia é o seguinte.

to com uma duvida a respeito do execute,
todos os tutorias que li sobre struts utilzando o meto execute,
mais se eu quizer criar um outro método e chamar direto da jsp

tipo INCLUIR.

Tem como;

cara…tb tive esse mesmo problema uns tempos atraz…só consegui resolver usando DispathAction ao inves de Action como superclasse…

entao no .properties vc deifine o nome dos botaoes e na action, um map com as opcoes…assim:

no aquivi properties
button.save=Salvar
button.delete=Excluir
button.search=Pesquisar
button.edit=Editar
button.teste=Testar
button.console=Imprimir no Console

na action

public class ContatoAction extends LookupDispatchAction {
    
    /* forward name="success" path="" */
    private final static String SAVE = "save";
    private final static String DELETE = "delete";
    private final static String UPDATE = "update";
    private final static String SEARCH = "search";
    private final static String CANCEL = "cancel";
    private final static String EDIT = "edit";
    private static Integer idContato = null;
    
    
    protected Map getKeyMethodMap() {
        Map map = new HashMap();
        map.put("button.save","save");
        map.put("button.delete","delete");
        map.put("button.search","search");
        map.put("button.edit","edit");
        map.put("button.teste","teste");
        map.put("button.console","console");
        return map;
    }
    
    public ActionForward save(ActionMapping mapping, ActionForm  formulario,
            HttpServletRequest request, HttpServletResponse response)
  {

            return mapping.findForward(UPDATE);
        }
        
    }
    
    public ActionForward delete(ActionMapping mapping, ActionForm  formulario,
            HttpServletRequest request, HttpServletResponse response)
{
        return mapping.findForward(DELETE);
        
    }
    
    public ActionForward search(ActionMapping mapping, ActionForm  formulario,
            HttpServletRequest request, {

        return mapping.findForward(SEARCH);
        
    }
    
    public ActionForward edit(ActionMapping mapping, ActionForm  formulario,
            HttpServletRequest request, HttpServletResponse response)
 {

        
        return mapping.findForward(EDIT);
        
    }
    
    public ActionForward teste(ActionMapping mapping, ActionForm  formulario,
            HttpServletRequest request, HttpServletResponse response){
  
        return mapping.findForward(SEARCH);
    }
    
    public ActionForward console(ActionMapping mapping, ActionForm  formulario,
            HttpServletRequest request, HttpServletResponse response) {
        
        return mapping.findForward(SEARCH);
    }
    
    
}

e na jsp

<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %>

<html >
    <head>
        
    </head>
    <body bgcolor="white">
        <h1>Cadastrar Contato</h1>
        
        <html:form action="/contatoAction">
            <p>
                <label>Nome:    
                    <html:text title="Nome do contato" property="nome" />
                </label>
            </p>
            <p>
                <label>Telefone: 
                    <html:text title="Telefone do contato" property="telefone" />
                </label>
            </p>
            <p>
                <label>Endereço:  
                    <html:text title="Endereço do contato" property="endereco" />
                </label>
            </p>
            
            <html:submit property="method" title="Salvar Dados do Contato">  
                <bean:message property="contatoAction" key="button.save" />  
            </html:submit>
            <html:reset value="Limpar" title="Limpar todos os Campos"/>
            <html:button onclick="window.location ='index.jsp'" property="btnCancel" value="Cancelar" title="Voltar para Tela Inicial"/>
            <html:errors/>
            
        </html:form>
        
    </body>
</html>

nao repare em alguns detalhes pois esse codigo é de qaundo estav aprendendo Struts…

espero ter ajudado :wink:

Legal cara, muito obrigado, vai ser de muita ajuda sim, e arrespeito do seu codigo não esquenta não.

Vc pode tranquilamente declarar quantos metodos quiser dentro da classe de sua action, basta no struts.xml vc declarar o nome da action o nome do metodo que aquela action ira invocar.
Na verdade eu nem uso esse metodo execute nas minhas actions, declaro os nomes do metodos que quero.

Segue abaixo um exemplo:

minha action
public class VigenciaAction extends ActionSupport implements SessionAware
{
public String inicializaConsultar()
{
return SUCCESS;
}

public String executaConsultar()
{
return SUCCESS;
}
}

no meu struts.xml

Consultar.jsp Consultar.jsp
	<action name="vigenciaListar" class="br.com.diego.VigenciaAction" method="executaConsultar">
		<result>Listar.jsp</result>
		<result name="input">Listar.jsp</result>
	</action>

Cara, esse modo como voce faz é muito bão,
muito obrigado pela dica.

Valeu mesmo.

Falow, precisando tamos ai !!
Abraço.