Botão commnandButton não executa ação

Estou trabalhando com java7, jsf, primefaces 6.1 e spring security.
e banco de dados mysql
Tô tendo problemas com um form a agora com um dialog tb.
No dialog para sair tem que clicar duas vezes no botão para executar o hide (fechar o dialog).
Para gravar também.
Começou a acontecer assim do nada, sem ao menos eu ter mexido no dialog.
Quando executo na minha maquina pelo eclipse não acontece.
Mas quando gero um war é que está zicando.
Tenho tb um outro botão commandButton de um form que este sim tem que clicar duas vezes para executar
a gravação dos dados mesmo rodando a aplicação no eclipse.

Já tentei várias vezes executar maven update project e não resolveu.

os códigos dos meus botões no dialog:

<p:commandButton value="#{msg.global_yes}"
icon="fa fa-check"
styleClass="GreenButton"
onclick=“PF(‘dialogSaveObservation’).hide()“
actionListener=”#{approvalListController.submitSiteObservation()}“
update=”@this”>
</p:commandButton>

        <p:commandButton value="#{msg.global_no}"
            icon="fa fa-remove"
            styleClass="RedButton"
            onclick="PF('dialogSaveObservation').hide()"                
            type="button" />             
  </p:dialog>

Alguém pode me dizer por que isso está acontecendo?
Obrigado.

Ninguém!!!

Esse botão tem que processar algum campo da página ou não? Se não, coloca process="@this"

O método submitSiteObservation é void? Pois o atributo actionListener espera um método void

O método é: @Transactional
public String submitSiteObservation()
por causa deste retorno é melhor colocar apenas action?
Ele altera um campo da tabela. Faz um update

Um actionListener executa apenas com métodos void

O que o método retorna? null?

Se você não vai fazer um direcionamento para alguma página, você pode usar o actionListener e deixar o método como void

EDIT:
Aqui esta um trecho retirado do site triadworks

ActionListener
Você deveria usar uma actionListener se o que você quer fazer é executar uma lógica
relacionada a view ou disparar uma ação antes de uma lógica de negócio. 
A lógica invocada por uma actionListener está mais ligada a detalhes da tela 
do que puramente regras de negócio.

Action
Você deveria usar uma action se sua intenção é executar uma lógica de negócio 
ou navegar entre páginas. O método da action pode retornar uma String 
indicando a regra de navegação.

Fonte: http://blog.triadworks.com.br/quando-usar-action-ou-actionlistener-com-jsf

O método retorna uma string. Este caso é um dialog que apresenta a possibilidade de alterar um campo de tabela que é muito grande. Então coloquei ele num componente a parte. O que é mais curioso é que se eu abrir o dialog e não fizer nada, apenas depois clicar em fechar o dialog, não funciona. Tem que clicar duas vezes. O botão de saída não tem nada, apenas hide no dialog

<p:commandButton value="#{msg.global_no}"
icon="fa fa-remove"
styleClass="RedButton"
onclick="PF(‘dialogSaveObservation’).hide()"
type=“button” />