Ação em botão com javascript[RESOLVIDO]

Bom dia pessoal,

É o seguinte…

Estou desenvolvendo uma aplicação para a faculdade em jsp…
E eu tinha feito os botões do meu formulario com o button proprio do html, só que decidi usar icones para ficar mais bonito; o problema é que eu não sei como vou chamar minha ação dentro desse botão

Eu andei pesquisando e vi que deviria usar uma function em javascript para chamar minha Action de cadastro e depois fazer um a href da imagem do botão e passar a function criada, so que não faço a mínima de como seria isso.

Alguém poderia me dar uma ajuda???

Obrigadaaaaaaaaa

Bom dia

Tenta fazer algo mais ou menos assim:


<a href="#" onclick="javascript: nomeFuncao()">
  <img src="imagem.gif" alt="Imagem" />
</a>

Até mais.

Caio, em primeiro lugar,

Obrigada por me ajudar…

O meu problema é o seguinte, eu não faço a mínima como criar essa function em Javascript para ela chamar minha Action…

Até tentei fazer uma, mas não deu certo…

Minha action está assim:

   public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request,
            HttpServletResponse response) throws Exception{
       
       String retorno = CATEGORIA;
       
        HttpSession session = request.getSession();
        CategoriaForm categoriaForm = (CategoriaForm)form;
        

        Categoria categoria = new Categoria();
        
        CategoriaDao dao = new CategoriaDao();
        if(canCateg(categoriaForm.getCodigo()))
        {               
               if(categoriaForm.getCodigo() != "0"){
                   categoria.setCod_Categ(Integer.parseInt(categoriaForm.getCodigo()));
                    categoria.setDescricao(categoriaForm.getDescricao());
                    categoria.setNome(categoriaForm.getNome());

                    dao.create(categoria);
                    session.setAttribute("categoria", categoria);     

                    return mapping.findForward("categoria");
               }
                
            
           
        }
        if(categoria.getCod_Categ() == 0){
            ActionMessages erros = new ActionMessages();
            erros.add("categoria.erro",new ActionMessage("Código não pode ser 0 ou nulo.Digite um código válido!",false));
            saveErrors(request, erros);

            session.removeAttribute("categoria");
            return mapping.findForward("erro");
        }
        if(categoriaForm.getCodigo() == null){
            ActionMessages erros = new ActionMessages();
        erros.add("categoria.erro",new ActionMessage("Não pode ser nulo",false));
        saveErrors(request, erros);

        session.removeAttribute("categoria");
        return mapping.findForward("erro");
        }
        ActionMessages erros = new ActionMessages();
        erros.add("categoria.erro",new ActionMessage("Código já cadastrado!",false));
        saveErrors(request, erros);

        session.removeAttribute("categoria");
        return mapping.findForward("erro");
        
   }

Tentei fazer uma function assim

function gravar()
{
      var form = document.forms[0];
      form.action = "categoria.do";
      form.acao.value = "CategoriaAction";
      form.submit();
}

E chamei no botão assim

[code]
<a ; >

Acho que meu pc está com problema…

Não foi o ultimo código e não to conseguindo alterar

mas eu chamo a imagem assim:

<a > <img /></a>

Olá, o button fazia o que? Um submit em um formulário?

exatamente…

O código que eu usava para o botão era esse

 &lt;input name="btnInserirCateg" type="submit" id="btnInserirCateg" value="Inserir"/&gt;

ao invés do button vc tá usando uma img javascript certo?

Bom então vc faz assim a função javascript dentro do head da sua página.

function doSubmit() {
  document.nomeDoSeuForm.submit();
}

Onde nomeDoSeuForm é o name que vc definiu para o seu form ok?

ex: …

e no link vc faz assim:

<a href="javascript:void(0);" onclick="doSubmit();"><img /></a>

markin1

Consegui

:smiley:

Certinho…rsrs

Já até fiz um de Reset…
Agora entendi a lógica
Muitiiiiiiiiiiiiiiiiiiiiissimo obrigada.

Ontem eu perguntei pra minha professora e ela não soube me responder…
ai tentei,quebrei a cabeça,mas como não consegui tive que pedir ajuda ao grande GUJ…
=]

Deixa eu perguntar,já aproveitando e claro, se puder responder.
Tem como, ao iniciar e resetar a tela , o foco ficar em um input?
Pq eu sei fazer em desktop,mas jsp não faço a mínima

Obrigadaaaaaaa!

^^ calma, não foi nada…
tem jeito de fazer isso sim, na verdade da pra fazer qualquer coisa :stuck_out_tongue_winking_eye:

pra dar um um reset e foco vc precisa criar uma função js por exemplo:

function onPageLoad() { //reseta seus campos ... //pra colocar foco em um input document.seuInput.focus(); }

e no body do html vc coloca assim:

<body onload="onPageLoad();" >

mas se você tem intenção de seguir como desenvolvedora web, aconselho você a estudar a API do jQuery http://jquery.com/ se você não conhece, é uma framework javascript que facilita todo o trabalho que era feito manualmente.

markin1

Em primeiro lugar obrigada…
E eu tenho sim o desejo de seguir com Desenvolvimento Web, não só tenho como estou entrei recentemente em uma empresa,onde estou, e no momento estou trabalhando em um projeto java web, e isso tem me ajudado pq eu tenho que desenvolver um ecommerce como projeto da faculdade, porém tenho ainda muitas dúvidas, pois estou desenvolvimento web a mais ou menos uns 3 meses; mas com a ajuda do GUJ estou conseguindo entender e vou ser sincera, tenho aprendido bem mais do que na própria faculdade.

E eu vou olhar sim aquele site que você me passou pois sei que ajudará tanto aqui na empresa quanto no projeto da faculdade…

Obrigada pela ajuda e desculpa o incomodo…rsrs

sem problemas :slight_smile:

no começo jQuery é meio estranho de mexer mas com o tempo ele se torna muito mais atrativo, com ele você consegue fazer muitas coisas, que seriam difíceis de escrever na mão, de uma maneira bem simples.

tudo no começo acho que seja meio dificil
Mas creio que com boa vontade, eu consigo, aos poucos eu chego lá

:wink:

Mais uma vez, muito obrigada!

markin1

Desculpa perguntar novamente…rsrs

É que estou colocando mensagem para os erros e também para sucesso de cadastro, porém eu não estou conseguindo colocar uma msg de sucesso.
Será que poderia me auxiliar?
A minha action está assim:

public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request,
            HttpServletResponse response) throws Exception{
       
        HttpSession session = request.getSession();
        CategoriaForm categoriaForm = (CategoriaForm)form;
        

        Categoria categoria = new Categoria();
        
        CategoriaDao dao = new CategoriaDao();
        if(canCateg(categoriaForm.getCodigo()))
        {          
               if(categoriaForm.getCodigo() != "0"){
                   categoria.setCod_Categ(Integer.parseInt(categoriaForm.getCodigo()));
                    categoria.setDescricao(categoriaForm.getDescricao());
                    categoria.setNome(categoriaForm.getNome());

                    dao.create(categoria);  
                    session.setAttribute("categoria", categoria);     
                    
                    return mapping.findForward("categoria");
               }
        }            
        ActionMessages erros = new ActionMessages();
        erros.add("categoria.erro",new ActionMessage("Código já cadastrado!",false));
        saveErrors(request, erros);

        session.removeAttribute("categoria");
        return mapping.findForward("erro");
       
   }

as mensagens de erro eu coloquei no CategoriaForm
e estão ok…

mas a de sucesso não aparece… =/

Voce sabe me dizer oq estou fzendo d errado?

Então… eu não mexo com struts tem um bom tempo, onde vc tá setando a mensagem de sucesso?

Então, na vdd eu acho que não setei em lugar algum =/

Essa parte de msgs eu ainda estou meio assim…

Acho que na vdd tenho que aprender primeiro como funciona, mas eu creio que tenho que fazer a validação juntos com as outras…

Eu tenho um form e uma Action

no meu form ta assim

 public ActionErrors validate(ActionMapping mapping, HttpServletRequest request){
         ActionErrors erros = new ActionErrors();
         if(codigo == null || codigo.equals(&quot;0&quot;) || codigo.length()&lt;=0)
             erros.add(&quot;codigo.erro&quot;,new ActionMessage(&quot;Código não pode ser nulo ou igual a 0&quot;,false));
         else if(nome == null || nome.equals(&quot;0&quot;) || nome.length()&lt;=0)
             erros.add(&quot;nome.erro&quot;,new ActionMessage(&quot;Nome não pode ser nulo&quot;,false)); 
         
         return erros;         
    }

e no meu action

public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request,
            HttpServletResponse response) throws Exception{
       
        HttpSession session = request.getSession();
        CategoriaForm categoriaForm = (CategoriaForm)form;
        

        Categoria categoria = new Categoria();
        
        CategoriaDao dao = new CategoriaDao();
        if(canCateg(categoriaForm.getCodigo()))
        {          
               if(categoriaForm.getCodigo() != &quot;0&quot;){
                   categoria.setCod_Categ(Integer.parseInt(categoriaForm.getCodigo()));
                    categoria.setDescricao(categoriaForm.getDescricao());
                    categoria.setNome(categoriaForm.getNome());
                    
                    ActionMessages erros = new ActionMessages();
                    erros.add(&quot;categoria&quot;,new ActionMessage(&quot;Cadastrado&quot;,false));
                    saveErrors(session,erros);
                    

                    dao.create(categoria);  
                    session.setAttribute(&quot;categoria&quot;, categoria);     
                    
                   
                    
                    return mapping.findForward(&quot;categoria&quot;);
                    
                    
                    
               }
        }            
        ActionMessages erros = new ActionMessages();
        erros.add(&quot;categoria.erro&quot;,new ActionMessage(&quot;Código já cadastrado!&quot;,false));
        saveErrors(request, erros);

        session.removeAttribute(&quot;categoria&quot;);
        return mapping.findForward(&quot;erro&quot;);
       
   }

Só q eu só consigo fazer validação no Action e acho que deveria de setar a msg no form, porém não consigo

Seria isso?

Olha, eu nunca gostei de Struts ^^
vc só quer setar a mensagem de sucesso ou quer enviar pra alguma página de sucesso?

Quero saber onde setar a mensagem de sucesso.