Galera, me deem uma ajuda aqui!
Estou tentando passar o código da empresa do Usuário Logado para o meu Bean Cidade porém não estou conseguindo.
Estou utilizando o Bean Autenticação para recuperar as informações do usuário logado, mas de que forma eu consigo passar isso para o meu Bean na hora de salvar a Cidade?
Cidade.xhtml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui"
template="/templates/template.xhtml"
>
<ui:define name="conteudo">
<h:form id="formListagem">
<p:panel header="Cidades - Listagem">
<p:dataTable id="tabela" emptyMessage="Nenhum registro encontrado."
paginator="true" value="#{cidadeBean.cidades}" var="cidade" rows="5">
<f:facet name="header">
<p:commandButton value="Novo" actionListener="#{cidadeBean.novo}"
oncomplete="PF('dialogo').show();"
update=":mensagem :formCadastro:painel" >
<f:actionListener type="org.omnifaces.eventlistener.ResetInputAjaxActionListener" />
</p:commandButton>
</f:facet>
<p:column headerText="Nome" filterBy="#{cidade.nome}"
sortBy="#{cidade.nome}">
<h:outputText value="#{cidade.nome}" />
</p:column>
<p:column headerText="Estado" filterBy="#{cidade.estado.nome}"
sortBy="#{cidade.estado.nome}">
<h:outputText value="#{cidade.estado.nome}" />
<h:outputText value=" - " />
<h:outputText value="#{cidade.estado.sigla}" />
</p:column>
<p:column headerText="Opções">
<p:commandButton icon="ui-icon-trash"
actionListener="#{cidadeBean.excluir}"
update=":mensagem :formListagem:tabela">
<p:confirm header="Confirmação" message="Deseja excluir a cidade"
icon="ui-icon-alert" />
<f:attribute name="cidadeSelecionada" value="#{cidade}" />
<f:actionListener type="org.omnifaces.eventlistener.ResetInputAjaxActionListener" />
</p:commandButton>
<p:commandButton icon="ui-icon-pencil"
actionListener="#{cidadeBean.editar}"
update=":mensagem :formCadastro:painel"
oncomplete="PF('dialogo').show();">
<f:attribute name="cidadeSelecionada" value="#{cidade}" />
<f:actionListener type="org.omnifaces.eventlistener.ResetInputAjaxActionListener" />
</p:commandButton>
</p:column>
</p:dataTable>
<p:confirmDialog global="true">
<p:commandButton value="Sim" type="button"
styleClass="ui-confirmdialog-yes" icon="ui-icon-check" />
<p:commandButton value="Não" type="button"
styleClass="ui-confirmdialog-no" icon="ui-icon-close" />
</p:confirmDialog>
</p:panel>
</h:form>
<p:dialog header="Cidades - Cadastro" widgetVar="dialogo"
draggable="false" resizable="false" global="true" closable="false">
<h:form id="formCadastro">
<h:panelGrid id="painel" columns="2">
<p:outputLabel for="nome" value="Nome:" />
<p:inputText id="nome" maxlength="50" size="30"
value="#{cidadeBean.cidade.nome}" required="true"
requiredMessage="O campo 'Nome' é obrigatório" />
<p:outputLabel for="estado" value="Estado:" />
<p:selectOneMenu id="estado" filter="true" value="#{cidadeBean.cidade.estado}"
converter="omnifaces.SelectItemsConverter"
required="true" requiredMessage="O campo 'Estado' é obrigatório">
<f:selectItem noSelectionOption="true" itemLabel="Selecione um estado" />
<f:selectItems value="#{cidadeBean.estados}" var="estado"
itemValue="#{estado}" itemLabel="#{estado.nome} - #{estado.sigla}" />
</p:selectOneMenu>
</h:panelGrid>
<h:panelGrid columns="2">
<p:commandButton value="Salvar" actionListener="#{cidadeBean.salvar}"
update=":mensagem :formCadastro:painel :formListagem:tabela"
oncomplete="PF('dialogo').hide();" />
<p:commandButton value="Fechar" oncomplete="PF('dialogo').hide();" />
</h:panelGrid>
</h:form>
</p:dialog>
</ui:define>
</ui:composition>
cidadeBean
package br.com.riverp.Bean;
import java.io.Serializable;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import org.omnifaces.util.Messages;
import br.com.riverp.dao.CidadeDAO;
import br.com.riverp.dao.EmpresaDAO;
import br.com.riverp.dao.EstadoDAO;
import br.com.riverp.dao.PessoaDAO;
import br.com.riverp.domain.Cidade;
import br.com.riverp.domain.Empresa;
import br.com.riverp.domain.Estado;
import br.com.riverp.domain.Pessoa;
@SuppressWarnings("serial")
@ManagedBean
@ViewScoped
public class CidadeBean implements Serializable {
private Cidade cidade;
private List<Cidade> cidades;
private List<Estado> estados;
private Empresa empresa;
public Cidade getCidade() {
return cidade;
}
public void setCidade(Cidade cidade) {
this.cidade = cidade;
}
public List<Cidade> getCidades() {
return cidades;
}
public void setCidades(List<Cidade> cidades) {
this.cidades = cidades;
}
public List<Estado> getEstados() {
return estados;
}
public void setEstados(List<Estado> estados) {
this.estados = estados;
}
public Empresa getEmpresa() {
return empresa;
}
public void setEmpresa(Empresa empresa) {
this.empresa = empresa;
}
@PostConstruct
public void listar() {
try {
CidadeDAO cidadeDAO = new CidadeDAO();
cidades = cidadeDAO.listar();
} catch (RuntimeException erro) {
Messages.addFlashGlobalError("Ocorreu um erro ao tentar listar as cidades");
erro.printStackTrace();
}
}
public void novo() {
try {
cidade = new Cidade();
EstadoDAO estadoDAO = new EstadoDAO();
estados = estadoDAO.listar("nome");
} catch (RuntimeException erro) {
Messages.addFlashGlobalError("Ocorreu um erro ao gerar uma nova cidade");
erro.printStackTrace();
}
}
public void salvar() {
try {
CidadeDAO cidadeDAO = new CidadeDAO();
cidadeDAO.merge(cidade);
cidade = new Cidade();
EstadoDAO estadoDAO = new EstadoDAO();
estados = estadoDAO.listar();
cidades = cidadeDAO.listar();
Messages.addGlobalInfo("Cidade salva com sucesso");
} catch (RuntimeException erro) {
Messages.addFlashGlobalError("Ocorreu um erro ao tentar salvar uma nova cidade");
erro.printStackTrace();
}
}
public void excluir(ActionEvent evento) {
try {
cidade = (Cidade) evento.getComponent().getAttributes().get("cidadeSelecionada");
CidadeDAO cidadeDAO = new CidadeDAO();
cidadeDAO.excluir(cidade);
cidades = cidadeDAO.listar();
Messages.addGlobalInfo("Cidade removida com sucesso");
} catch (RuntimeException erro) {
Messages.addFlashGlobalError("Ocorreu um erro ao tentar remover a cidade");
erro.printStackTrace();
}
}
public void editar(ActionEvent evento){
try {
cidade = (Cidade) evento.getComponent().getAttributes().get("cidadeSelecionada");
EstadoDAO estadoDAO = new EstadoDAO();
estados = estadoDAO.listar();
} catch (RuntimeException erro) {
Messages.addFlashGlobalError("Ocorreu um erro ao tentar selecionar uma cidade");
erro.printStackTrace();
}
}
}
Preciso estanciar o codigo da empresa na entidade Cidade.