P:commandLink não executa o método

Bom dia pessoal, sou novato em primefaces e estou tentando desenvolver uma pagina meu problema é o seguinte:
Possuo uma dataTable que só e renderizada quando clico em um commandButton dentro dessa tabela em cada linha da mesma possuo um commandLink que deveria executar um metodo de exclusão, mas que não é executado.
Obs: Quando carrego a tabela na inicialização da pagina o método de exclusão funciona corretamente.

.xhtml

<h:form>

	 <p:commandButton value="Pesquisar" ajax="false"  immediate="true"
			action="#{usuarioBean.inicializar}" icon="ui-icon-search" />
		<div class="ui-fluid">
			<p:dataTable id="usertable" style="margin-top:20px"
				rendered="#{not empty usuarioBean.usuarios}" var="usuario"
				reflow="true" rows="5" paginator="true"
				value="#{usuarioBean.usuarios}">
				<p:column headerText="Nome">
					<h:outputText value="#{usuario.nome}" />
				</p:column>
				<p:column headerText="Usuario">
					<h:outputText value="#{usuario.usuario}" />
				</p:column>
				<p:column headerText="Grupo">
					<h:outputText value="#{usuario.grupo}" />
				</p:column>
				<p:column headerText="Setor" style="width:150px">
					<h:outputText value="#{usuario.setor}" />
				</p:column>
				<p:column headerText="Ações" style="width:50px">
					<h:commandLink immediate="true" action="#{usuarioBean.excluir}">
					<i class="fa fa-times"></i>
					<f:setPropertyActionListener target="#{usuarioBean.usuarioSelecionado}" value="#{usuario}"/>
					</h:commandLink>
					<h:link><i class="fa fa-pencil"></i></h:link>
				</p:column>
			</p:dataTable>
		</div>
	</h:form>

Bean

public class UsuarioBean implements Serializable {
private Repositorios repositorios = new Repositorios();
private Usuario usuario = new Usuario();
private List usuarios = new ArrayList();
private Usuario usuarioSelecionado;

@SuppressWarnings("unchecked")
public void inicializar() {
	Usuarios usuarios = this.repositorios.getUsuarios();
	System.out.println("=================Testando===================");
	this.usuarios = usuarios.todos();
	Session session = (Session) FacesUtil.getRequestAtributte("session");
	this.usuarios = session.createCriteria(Usuario.class).addOrder(Order.asc("nome")).list();

}

public Setor[] getSetores() {
	return Setor.values();
}

public void cadastrar() {
	GestaoUsuarios gestaousuarios = new GestaoUsuarios(this.repositorios.getUsuarios());
	try {
		gestaousuarios.salvar(usuario);
		this.usuario = new Usuario();
		this.inicializar();
		FacesUtil.adcionarMensagem(FacesMessage.SEVERITY_INFO, "Cadastro efetuado com sucesso!");
	} catch (Exception e) {
		FacesUtil.adcionarMensagem(FacesMessage.SEVERITY_ERROR, e.getMessage());
	}
}

public void excluir() {
	GestaoUsuarios gestaoLancamentos = new GestaoUsuarios(
			this.repositorios.getUsuarios());
     System.out.println("*************Fui chamado******************");
	try {
		gestaoLancamentos.excluir(this.usuarioSelecionado);
		this.inicializar();
		FacesUtil.adcionarMensagem(FacesMessage.SEVERITY_INFO,
				"Usuario excluido com sucesso!");
	} catch (Exception e) {
		FacesUtil.adcionarMensagem(FacesMessage.SEVERITY_ERROR,
				e.getMessage());

	}

}