DispatchAction struts button

Galera estou usando o dispatchaction na minha action no struts, nela tenho dois metodos salvar() e deletar(), como posso fazer para criar dois botoes um para salvar e outro para deletar, pois so consegui fazer o salvar pq fiz com um submit

Meu JSP


<html:html locale="true">
    <head>        
        <title><bean:message key="titulo"/></title>
    <html:base/>    
    </head>
    <body>
        <html:form action="conta" focus="idconta">
            <html:hidden property="method" value="salvar"/>
            Id:<html:text property="idconta"/>
            Data_Cadastro<html:text property="datacadastro"/>
            Nome:<html:text property="nome"/>
            Obs:<html:text property="obs"/>
            <html:submit value="Salvar"/>            
        </html:form>
    </body>
</html:html>

Minha Action


public class ContaAction extends DispatchAction {
    
private final static String SUCCESS = "success";    
           
    public ActionForward salvar(ActionMapping mapping, ActionForm  form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        
        HttpSession session = request.getSession();
        
        ContaForm contaForm = (ContaForm) form;
        Conta conta = new Conta();
        BeanUtils.copyProperties(conta, contaForm);
        
        PersistenciaDAO persistencia = new PersistenciaDAO();
        
        persistencia.salvar(conta);
        
        return mapping.findForward(SUCCESS);        
                
    }
    
    public ActionForward deletar(ActionMapping mapping, ActionForm  form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
           
        HttpSession session = request.getSession();
        
        ContaForm contaForm = (ContaForm) form;
        Conta conta = new Conta();
        BeanUtils.copyProperties(conta, contaForm);
        
        PersistenciaDAO persistencia = new PersistenciaDAO();
        
        persistencia.deletar(conta);
        
        return mapping.findForward(SUCCESS);        
                
    }

Struts-config

<action-mappings>
        <action input="/conta.jsp" name="ContaForm" parameter="method" path="/conta" scope="session" type="conta.action.ContaAction"/>         
    </action-mappings>

Como posso fazer para ter os dois botoes no mesmo formulario com acoes diferentes definidas por html:hidden

alguém pode me ajudar o que preciso fazer para obter esse resultado?

Vc tem que alterar o seu campo Method antes de processar…
Altere o html:submit para html:button e implemente um JS que altere o valor dele

vc pode implementar um exemplo para que eu possoa dar uma olhada, to quebrando a cabeça o dia todo, os exemplo que vi na net nao foram satisfatorios

ola…

cara… se não me engano já foi respondido isso para vc nesses tópicos aqui…http://www.guj.com.br/posts/list/93274.java e
http://www.guj.com.br/posts/list/93290.java

não é isso que vc precisa???

<html:html locale="true"> <head> <title><bean:message key="titulo"/></title> <script> function alteraMetodo(metodo){ documento.forms[0].method.value = metodo; } </script> <html:base/> </head> <body> <html:form action="conta" focus="idconta"> <html:hidden property="method" value=""/> Id:<html:text property="idconta"/> Data_Cadastro<html:text property="datacadastro"/> Nome:<html:text property="nome"/> Obs:<html:text property="obs"/> <html:button value="Salvar" onclick="alteraMetodo('save');"/> <html:button value="Atualizar" onclick="alteraMetodo('update');"/> </html:form> </body> </html:html>

valeu galera mais ainda nao consegui :frowning:

Olha só…

<action-mappings> <action input="/conta.jsp" name="ContaForm" parameter="method" path="/conta" scope="session" type="conta.action.ContaAction"/> </action-mappings>
Esse parameter=“method” indica que quando a Action “processar”, ela vai procurar por um atributo chamado method. O VALOR do atributo method deve ser o nome do método que será instanciado, seguindo a mesma assinatura do método execute.

Entendeu até aqui?

Sim até ai entendi, por isso uso o <html:hidden para dizer qual o metodo da action que irei usar, mais como fazer isso para chamar metodos diferentes da action no mesmo form?

Eu não gosto muito de ficar alterando um input hidden, eu prefiro algo do tipo: &lt;input type="button" name="voltar" value="Voltar" onclick="$('voltarButton').click();"/&gt; &lt;input type="submit" id="voltarButton" name="method" value="voltarAction" style="display: none;visibility: hidden;" /&gt;

É questão de preferência, deste modo funciona muito bem :slight_smile:
Abraços e boa sorte.

obs: o $(‘voltarButton’) é o mesmo que document.getElementById(‘voltarButton’), ok?