[RESOLVIDO] XHTML não encontra o bean

3 respostas
webservicejavawebjava
R

Galera estou desenvolvendo um sistema Java Web.
Tenho algumas classes já criadas com seus respectivos beans e funciona tudo corretamente.
Ao criar a classe funcionario e funcionarioBean não estou conseguindo acessa-lo no xhtml. E estou fazendo exatamente com fiz nas outra classes. Alguém da um help?

Funcionario.xhtml

<h:form id="formListagem">
	<p:panel header="Lista de Funcionarios">

<p:dataTable id="tabela" emptyMessage="Nenhum registro encontrado."
			paginator="true" value="#{funcionarioBean.funcionarios}" var="funcionario"
			rows="5">
			<f:facet name="header">
				<p:commandButton value="Novo" oncomplete="PF('dialogo').show();"
					actionListener="#{funcionarioBean.novo}"
					update=":mensagem :formCadastro:painel">
					<f:actionListener
						type="org.omnifaces.eventlistener.ResetInputAjaxActionListener" />
				</p:commandButton>
			</f:facet>

			<p:column headerText="Nome" sortBy="#{funcionario.pessoa.nome}"
				filterBy="#{funcionario.pessoa.nome}">
				<h:outputText value="#{funcionario.pessoa.nome}" />
			</p:column>

			<p:column headerText="CPF" sortBy="#{funcionario.pessoa.cpf}"
				filterBy="#{funcionario.pessoa.cpf}">
				<h:outputText value="#{funcionario.pessoa.cpf}" />
			</p:column>

			<p:column headerText="Data" sortBy="#{funcionario.dataAdmissao}"
				filterBy="#{funcionario.dataAdmissao}">
				<h:outputText value="#{funcionario.dataAdmissao}" />
			</p:column>
			
			<p:column headerText="Empresa" sortBy="#{funcionario.empresa.nome}"
				filterBy="#{funcionario.empresa.nome}">
				<h:outputText value="#{funcionario.empresa.nome}" />
			</p:column>
			
			<p:column headerText="Opções">
				<p:commandButton icon="ui-icon-trash"
					actionListener="#{funcionarioBean.excluir}"
					update=":mensagem :formListagem:tabela">
					<p:confirm header="Confirmação" message="Deseja excluir o usuário?"
						icon="ui-icon-alert" />
					<f:attribute name="funcionarioSelecionado" value="#{funcionario}" />
				</p:commandButton>
				
				<p:commandButton icon="ui-icon-pencil"
					actionListener="#{funcionarioBean.editar}"
					update=":mensagem :formCadastro:painel"
					oncomplete="PF('dialogo').show();">
					<f:attribute name="funcionarioSelecionado" value="#{funcionario}" />
					<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>

FuncionarioBean

@SuppressWarnings("serial")
@ManagedBean
@ViewScoped
public class FuncionarioBean implements Serializable {
	
	private Funcionario funcionario;
	private Empresa empresa;
	private Pessoa pessoa;
	private List<Empresa> empresas;
	private List<Pessoa> pessoas;
	private List<Funcionario> funcionarios;
	
	public Empresa getEmpresa() {
		return empresa;
	}
	
	public void setEmpresa(Empresa empresa) {
		this.empresa = empresa;
	}
	
	public Pessoa getPessoa() {
		return pessoa;
	}
	
	public void setPessoa(Pessoa pessoa) {
		this.pessoa = pessoa;
	}
	
	public Funcionario getFuncionario() {
		return funcionario;
	}
	
	public void setFuncionario(Funcionario funcionario) {
		this.funcionario = funcionario;
	}
	
	public List<Empresa> getEmpresas() {
		return empresas;
	}
	
	public void setEmpresas(List<Empresa> empresas) {
		this.empresas = empresas;
	}
	
	public List<Pessoa> getPessoas() {
		return pessoas;
	}
	
	public void setPessoas(List<Pessoa> pessoas) {
		this.pessoas = pessoas;
	}
	
	public List<Funcionario> getFuncionarios() {
		return funcionarios;
	}
	
	public void setFuncionarios(List<Funcionario> funcionarios) {
		this.funcionarios = funcionarios;
	}
	
	@PostConstruct
	public void listar(){
		try{
			FuncionarioDAO funcionarioDAO = new FuncionarioDAO();
			funcionarios = funcionarioDAO.listar("codigo");
		}catch(RuntimeException erro){
			Messages.addGlobalError("Ocorreu um erro ao tentar listar os funcionarios");
			erro.printStackTrace();
		}
	}
	
	public void novo() {
		try {
			funcionario = new Funcionario();
			
			PessoaDAO pessoaDAO = new PessoaDAO();
			pessoas = pessoaDAO.listar("nome");
			
			EmpresaDAO empresaDAO = new EmpresaDAO();
			empresas = empresaDAO.listar("nome");
		} catch (RuntimeException erro) {
			Messages.addGlobalError("Ocorreu um erro ao tentar criar um novo Funcionario");
			erro.printStackTrace();
		}
	}

	public void salvar() {
		try {
			FuncionarioDAO funcionarioDAO = new FuncionarioDAO();
			funcionarioDAO.merge(funcionario);
			
			funcionario = new Funcionario();
			funcionarios = funcionarioDAO.listar("codigo");
			
			PessoaDAO pessoaDAO = new PessoaDAO();
			pessoas = pessoaDAO.listar("nome");
			
			EmpresaDAO empresaDAO = new EmpresaDAO();
			empresas = empresaDAO.listar("nome");
			
			Messages.addGlobalInfo("Funcionario salvo com sucesso");
		} catch (RuntimeException erro) {
			Messages.addGlobalError("Ocorreu um erro ao tentar salvar o Funcionario");
			erro.printStackTrace();
		}
	}
	
	public void excluir(ActionEvent evento) {
		try {
			funcionario = (Funcionario) evento.getComponent().getAttributes().get("funcionarioSelecionado");

			FuncionarioDAO funcionarioDAO = new FuncionarioDAO();
			funcionarioDAO.excluir(funcionario);
			
			funcionarios = funcionarioDAO.listar();

			Messages.addGlobalInfo("Funcionario removido com sucesso");
		} catch (RuntimeException erro) {
			Messages.addFlashGlobalError("Ocorreu um erro ao tentar remover o Funcionario.");
			erro.printStackTrace();
		}
	}
	
	public void editar(ActionEvent evento){
		try {
			funcionario = (Funcionario) evento.getComponent().getAttributes().get("funcionarioSelecionado");
			
			PessoaDAO pessoaDAO = new PessoaDAO();
			pessoas = pessoaDAO.listar();
			
			EmpresaDAO empresaDAO = new EmpresaDAO();
			empresas = empresaDAO.listar();
		} catch (RuntimeException erro) {
			Messages.addFlashGlobalError("Ocorreu um erro ao tentar selecionar um Funcionario.");
			erro.printStackTrace();
		}	
	}
	
	
}

3 Respostas

M

Amigo, só pra ter certeza que o nome esteja pegando certo, mude para:

@ManagedBean(name = "funcionarioBean")

O erro refere-se pra qual linha exatamente?

R

Noooossa amigo, erro totalmente meu na hora de importar a classe @ManagedBean.

Fui implementar o name que você me passou e tava falando que esse método era indefinido para o MB então achei estranho, fui até outra classe bean e aceitou normalmente. Então já desconfiei da importação o @ManagedBean que eu tinha importado era o annotations e não o javax-faces. Não acredito nessa proeza kkkk mas é isso, vivendo e aprendendo. Muito obrigado amigo e tenha um bom dia.

M

Faz parte, isso é normal acontecer, pelo menos conseguiu resolver…

Abraço mano, bom dia pra vc tbm.

Criado 21 de junho de 2019
Ultima resposta 21 de jun. de 2019
Respostas 3
Participantes 2