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

17 respostas
D

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

17 Respostas

C

Bom dia

Tenta fazer algo mais ou menos assim:

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

Até mais.

D

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]

D

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>

M

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

D

exatamente…

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

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

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>

D

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!

M

^^ 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();" >
M

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.

D

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

M

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.

D

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!

D

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?

M

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

D

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("0") || codigo.length()&lt;=0)
             erros.add("codigo.erro",new ActionMessage("Código não pode ser nulo ou igual a 0",false));
         else if(nome == null || nome.equals("0") || nome.length()&lt;=0)
             erros.add("nome.erro",new ActionMessage("Nome não pode ser nulo",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() != "0"){
                   categoria.setCod_Categ(Integer.parseInt(categoriaForm.getCodigo()));
                    categoria.setDescricao(categoriaForm.getDescricao());
                    categoria.setNome(categoriaForm.getNome());
                    
                    ActionMessages erros = new ActionMessages();
                    erros.add("categoria",new ActionMessage("Cadastrado",false));
                    saveErrors(session,erros);
                    

                    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");
       
   }

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?

M

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

D

Quero saber onde setar a mensagem de sucesso.

Criado 11 de junho de 2010
Ultima resposta 11 de jun. de 2010
Respostas 17
Participantes 3