JSF 2.0 + Ajax

Quando coloco a tag ajax em algum link percebo algo estranho.
Na página para qual o link vai, para fazer alguma ação tenho que clicar duas vezes no mesmo botão para poder realizar a ação.
Imagino que quando coloco a tag ajax, quando clico ele não “ativa” o bean da página.

Como posso reverter essa situação utilizando ajax?

posta o xhtml e explica melhor a dúvida.

	<h:graphicImage library="imagens/icones" name="operacao_add.png"/>				                	                	
               			<h:commandLink value="Operação" action="/paginas/cadastros/cadastrarOperacao.xhtml">
               				<f:ajax execute="@form"/>
               			</h:commandLink>  
               		 	
<h:form id="frmCadastroOperacao" >
	
	<p:growl id="mensagemCadOp" showDetail="false" showSummary="true" />
	
	<h:panelGrid columns="2" id="cadastroOperacao"  >
	
		<h:outputText value="Nome: "/>
		<h:panelGroup>
			<p:inputText value="#{operacaoBean.operacao.nome}" id="nomeOperacao"/>
			</h:panelGroup>
		<p:commandButton value="Cadastrar" actionListener="#{operacaoBean.salvarOperacao}" 
		update="mensagemCadOp" process="@form"/>
	</h:panelGrid>

O primeiro código é o link para o segundo. Após ir para o segundo código ele só “ativa” o bean se eu der 2 cliques no commandButton. Por exemplo, se eu não digitar nda aparece uma imagem ao clicar no botão, porém da maneira que está eu tenho que clicar 2 vezes para a mensagem aparecer.

Se você quer renderizar a página inteira com uma nova requisição “não ajax”, é só tirar a tag f:ajax (independente do f:ajax, o h:form é processado). Se você quer fazer uma requisição ajax, precisa ter um listener que modifique algum componente na tela e use a propriedade render do f:ajax para atualizar essa parte da tela. Mas como está usando o primefaces, mais cômodo usar o p:commandLink pois ele já tem o ajax.

E para desativar o Ajax do p:commandButton basta colocar ajax=false.