ActionEvent não funciona

1 resposta
R

Estou desenvolvendo um aplicativo e utilizo actionlistener em várias páginas. Somente em uma página não funciona. Quando clico o método setSessao é executado e não o ActionListener.
Já tentei inúmeras formas de mudança e, também, procurei no GUJ, sem sucesso.
Os trechos de código são os seguintes:

  1. Na página
    <rich:column style=“text-align:center;”>
    <f:facet name=“header”>
    <h:outputText value="#{msgs[‘editar’]}"></h:outputText>
    </f:facet>
    <a4j:commandLink actionListener="#{pagamentoHandler.selecionaParcela}" reRender="_pagamento">
    <h:outputText value="#{msgs[‘editar’]}"/>
    <f:param id=“editIdParcela” name=“editIdParcela” value="#{pt.id}"/>
    </a4j:commandLink>
    </rich:column>

  2. No bean

    public void selecionaParcela(ActionEvent event) {
    
    FacesContext context = FacesContext.getCurrentInstance();
    
    String id = context.getExternalContext().getRequestParameterMap().get(editIdParcela).toString();
    
    this.pagamento = ((Pagamento) this.dao.load(id));	
     this.formaPagamentoSelecionado.setValue(this.pagamento.getFormaPagamento().getId());
     if (this.pagamento.getCodigoBarra() != null) {
     	if (this.pagamento.getTipoLeituraCodigoBarra().equals("D")) {
     		this.setTipoCodigoBarra(false);
     	}
     	else {
     		this.setTipoCodigoBarra(true);
     	}
     }
    

    }

    public void setSessao(Session session) {
    
    this.dao = new Dao(session, Pagamento.class);
    
    this.daoDocumento = new Dao(session, Documento.class);
    
    this.daoFormaPagamento = new Dao(session, FormaPagamento.class);
    
    FacesContext context = FacesContext.getCurrentInstance();
    
    ExternalContext externalContext = context.getExternalContext();
    
    HttpSession ses = (HttpSession) externalContext.getSession(false);
    
    ses.setAttribute(idDocumento, 1L);
    
    }
    

Não existe qualquer mensagem de erro. Aliás, tudo se comporta como se estivesse correto, sem erros.
Alguém poderia me ajudar ? :?

1 Resposta

lessandronp

Amigo, já passei por esse problema. Detalhe: Verifique se no seu form possui algum campo com required=true, pois ele não executará o actionListener se algum campo não foi preenchido. Isso acaba passando despercebido por nós em casos que esses campos estão ocultos. Tente colocar um immediate=true no seu a4j:commandLink e veja se funciona. Se funcionar o problema é exatamente este. Existem campos não preenchidos que não deixam o método pagamentoHandler.selecionaParcela seja chamado.
Abs,
Lessandro

Criado 14 de maio de 2010
Ultima resposta 17 de mai. de 2010
Respostas 1
Participantes 2