Problema com fluxo JSF

E aí pessoal, estou com um problema que parecia ser simples.
Tenho uma página (INDEX), que tém um autoComplete, do primefaces, juntamente com um botão que submete ou parte ou o valor selecionado do autocomplete para pesquisa, abaixo:
(INDEX):

<div id="campos"> <p:autoComplete id="complete" value="#{empresaBean.empresa}" var="empresa" completeMethod="#{empresaBean.autocompleteEmpresa}" itemLabel="#{empresa.nome}" itemValue="#{empresa}" onkeyup="this.value = this.value.toUpperCase();" maxResults="5" size="82" converter="Converter" effect="slide" required="true" requiredMessage="Digite um nome para pesquisa."> </p:autoComplete> </div> <div id="botaopesq"> <p:commandLink actionListener="#{empresaBean.buscaPorNome}" title="Pesquisar" value="#{nome}" action="pesquisa"> <h:graphicImage library="images" name="botao.png" width="118" height="27" style="border:0" /> <f:setPropertyActionListener target="#{empresaBean.empresa}" value="#{empresa.nome}" /> </p:commandLink>

A action pesquisa, está abaixo, direcionaria para a página pesquisa:

<navigation-case> <from-outcome>pesquisa</from-outcome> <to-view-id>/publico/pesquisa.xhtml</to-view-id> </navigation-case>

(PESQUISA)

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:p="http://primefaces.org/ui">
<ui:composition template="/templates/templatePesquisa.xhtml">
	<ui:define name="corpo">
		<h:head>
			<title>Luziânia OnLine</title>
		</h:head>
		<h:body>
			<p:growl id="messages" autoUpdate="true" />
			<h:inputHidden value="#{empresaBean.destinoSalvar}" />
			<h:form>
				<div id="campos">
					<p:autoComplete id="complete" value="#{empresaBean.empresa}"
						var="empresa" completeMethod="#{empresaBean.autocompleteEmpresa}"
						itemLabel="#{empresa.nome}" itemValue="#{empresa}"
						onkeyup="this.value = this.value.toUpperCase();" maxResults="5"
						size="60" converter="Converter" required="true"
						requiredMessage="Valor obrigatório." autocomplete="true" />

					<p:commandLink
						actionListener="#{empresaBean.buscarPorNome}"
						update="empresasTable">
						<h:graphicImage library="images" name="botao.png" width="118"
							height="27" style="border:0" />
					</p:commandLink>

				</div>

				<h:outputLabel rendered="#{empty empresaBean.listaPesquisa}"
					value="Refina sua pesquisa." />

				<h:dataTable value="#{empresaBean.listaPesquisa}" var="empresa"
					id="empresasTable" style="width:700px;">
					<h:column>
						#{empresa.nome} - #{empresa.email}
					</h:column>
				</h:dataTable>
				<div class="container">
					<ul >
						<li>&lt;h:graphicImage library="imagensgalerialateral"
								name="1.jpg" /&gt;</li>
					</ul>
				&lt;/div&gt;
			&lt;/h:form&gt;
		&lt;/h:body&gt;
	&lt;/ui:define&gt;
&lt;/ui:composition&gt;
&lt;/html&gt;

Obtenho esse fluxo normalmente até aqui, o problema é que quando tento ir até a segunda página, a impressão que passa é a sessão “morrer” ali, ou seja, o autocomplete não funciona até que tenha uma interação com a página, como submeter um valor no campo e clicar sobre o botão CommandLInk e para fazer com que o botão funcione, preciso clicar duas vezes sobre ele. abaixo posto o ManagedBean.

package com.portal.web;

import java.util.ArrayList;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;

import com.portal.empresa.Empresa;
import com.portal.empresa.EmpresaRN;

@ManagedBean
@RequestScoped
public class EmpresaBean {

	private Empresa empresa = new Empresa();
	private EmpresaRN empresaRN = new EmpresaRN();
	private List&lt;Empresa&gt; empresas;
	private List&lt;Empresa&gt; listaPesquisa;
	private List&lt;Empresa&gt; lista;
	private String destinoSalvar;

	public String novo() {
		this.destinoSalvar = "empresaSucesso";
		this.empresa = new Empresa();
		return "empresa";
	}

	public String salvar() {
		FacesContext context = FacesContext.getCurrentInstance();
		if (isEmpresaCadastrada(empresa)) {
			FacesMessage facesMessage = new FacesMessage("Digite um nome diferente de empresa, esta j&#65533; est&#65533; cadastrada.");
			context.addMessage(null, facesMessage);
			return null;
		}
		EmpresaRN empresaRN = new EmpresaRN();
		empresaRN.salvar(this.empresa);
		return "empresaSucesso";
	}

	public String editar() {
		return "/admin/empresa";

	}

	public String excluir() {
		EmpresaRN empresaRN = new EmpresaRN();
		empresaRN.excluir(this.empresa);
		this.lista = null;
		return null;
	}

	public List&lt;Empresa&gt; autocompleteEmpresa(String query) {
		List&lt;Empresa&gt; queryResults = new ArrayList&lt;Empresa&gt;();
		if (empresas == null) {
			this.empresas = empresaRN.complete();
		}
		for (Empresa e : empresas) {
			if (e.getNome().startsWith(query)) {
				queryResults.add(e);
			}
		}
		return queryResults;
	}

	public List&lt;Empresa&gt; getLista() {
		if (this.lista == null) {
			EmpresaRN empresaRN = new EmpresaRN();
			this.lista = empresaRN.listar();
		}

		return this.lista;
	}

	public List&lt;Empresa&gt; buscarPorNome(ActionEvent event) {
		if (this.listaPesquisa == null) {
			this.listaPesquisa = empresaRN.buscaPorNome(empresa.getNome());
		}

		return this.listaPesquisa;
	}

	public boolean isEmpresaCadastrada(Empresa empresa) {
		return empresaRN.verificaEmpresa(empresa.getNome());
	}

	public Empresa getEmpresa() {
		return empresa;
	}

	public void setEmpresa(Empresa empresa) {
		this.empresa = empresa;
	}

	public EmpresaRN getEmpresaRN() {
		return empresaRN;
	}

	public void setEmpresaRN(EmpresaRN empresaRN) {
		this.empresaRN = empresaRN;
	}

	public List&lt;Empresa&gt; getEmpresas() {
		return empresas;
	}

	public void setEmpresas(List&lt;Empresa&gt; empresas) {
		this.empresas = empresas;
	}

	public String getDestinoSalvar() {
		return destinoSalvar;
	}

	public void setDestinoSalvar(String destinoSalvar) {
		this.destinoSalvar = destinoSalvar;
	}

	public List&lt;Empresa&gt; getListaPesquisa() {
		return listaPesquisa;
	}

	public void setListaPesquisa(List&lt;Empresa&gt; listaPesquisa) {
		this.listaPesquisa = listaPesquisa;
	}

	public void setLista(List&lt;Empresa&gt; lista) {
		this.lista = lista;
	}
}

Agradeço desde já os que puderem ajudar.

Verifique que o seu bean é “requestscoped” e se não for isso, acredito que seja o fato de todos os botões no primefaces serem “ajax=true” por default, eu tentaria trocar por ajax=false para ter o comportamento padrão do jsf 2.

Cara, consegui, bastou trocar o <p:commandLInk> por <h:commandLink> muito obrigado.