[Resolvido] Problema com p:commandButton

Galera, estou com um probleminha no p:commandButton do primefaces… Ele não chama o actionListener! Meu problema está no botão gravar

Poderiam me ajudar por favor?

Tenho o seguinte código:

index.xhtml

<p:growl id="mensagem"  showDetail="true" />
        <p:gmap id="mapa" center="-15.565986,-54.309782" zoom="15" model="#{localBean.locais}" onPointClick="dlgLocal.show()" type="HYBRID" style="width:600px;height:400px">
            <p:ajax event="pointSelect" listener="#{localBean.novo}" update="formLocal" />
        </p:gmap>

        <p:dialog widgetVar="dlgLocal" width="380" height="100">  
            <h:form id="formLocal">  
                <p:focus for="desc" />
                <h:panelGrid columns="2" style="width: 100%">
                    <h:outputLabel for="desc" value="Descrição:" />  
                    <p:inputText id="desc" value="#{localBean.local.descricao}" /> 
                </h:panelGrid>
                <p:toolbar>
                    <p:toolbarGroup align="right">
                        <p:commandButton ajax="false" value="Gravar" actionListener="#{localBean.gravar}" oncomplete="dlgLocal.hide()" update=":mapa" immediate="true"></p:commandButton>
                    </p:toolbarGroup>
                </p:toolbar>
            </h:form>  
        </p:dialog>

LocalBean.java

public void novo(PointSelectEvent event) {
        local = new Local();
        LatLng coord = event.getLatLng();
        local.setLatitude(coord.getLat());
        local.setLongitude(coord.getLng());
    }

public void gravar() {  
        localDao.gravar(local);        
    }

LocalDao.java

public void gravar(Local local) {        
        BasicDBObject doc = new BasicDBObject().
                append("descricao", (String)local.getDescricao()).
                append("latitude", local.getLatitude()).
                append("longitude", local.getLongitude());
        
        db.insert(doc);
    }

duas perguntas para fazer primeiro:

1 - Porque você está usando immediate true? você sabe o conceito?
2 - Porque você está usando o actionListener se o seu método gravar não está esperando nenhum ActionEvent?

  1. pq não action?

Obrigado por tentar responder, mas consegui fazer funcionar.

removi o immediate="true"
adicionei um <h:form>

kleberdamasco, o gravar funcionou mesmo sem evento. Valeu.

[quote=therodrigoagostin]Obrigado por tentar responder, mas consegui fazer funcionar.

removi o immediate="true"
adicionei um <h:form>

kleberdamasco, o gravar funcionou mesmo sem evento. Valeu.[/quote]

funciona sim, no entanto, para um melhor padrão de código
troque-o para somente action.

[quote=kleberdamasco]
funciona sim, no entanto, para um melhor padrão de código
troque-o para somente action.[/quote]

Obrigado, vou alterar sim…
Criei um tópico novo, se puder me dar uma ajuda agradeço.

Valeu.

[quote=therodrigoagostin][quote=kleberdamasco]
funciona sim, no entanto, para um melhor padrão de código
troque-o para somente action.[/quote]

Obrigado, vou alterar sim…
Criei um tópico novo, se puder me dar uma ajuda agradeço.

Valeu.[/quote]

passa o link

http://www.guj.com.br/java/301409-drawing-tool

[quote=therodrigoagostin]Obrigado por tentar responder, mas consegui fazer funcionar.

removi o immediate="true"
adicionei um <h:form>

kleberdamasco, o gravar funcionou mesmo sem evento. Valeu.[/quote]

mas, é claro que vai funcionar mesmo sem evento. Recomendo vc dar uma olhada na documentação e ver a diferença entre os dois. O mais importante não é fazer funcionar e saber pq funcionou. :slight_smile: