WELD-001408: Unsatisfied dependencies

Estou fazendo esse curso de java e está ocorrendo esse erro:

ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) WFLYCTL0013: Operation (“deploy”) failed - address: ([(“deployment” => “Loucademia.war”)]) - failure description: {“WFLYCTL0080: Failed services” => {“jboss.deployment.unit.“Loucademia.war”.WeldStartService” => "Failed to start service
Caused by: org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type FacesContext with qualifiers @Default
at injection point [BackedAnnotatedField] @Inject private br.com.softblue.loucademia.interfaces.aluno.web.AlunoBean.facesContext
at br.com.softblue.loucademia.interfaces.aluno.web.AlunoBean.facesContext(AlunoBean.java:0)
"}}

Essa e minha classe:

package br.com.softblue.loucademia.interfaces.aluno.web;

import java.io.Serializable;

import javax.ejb.EJB;
import javax.enterprise.context.RequestScoped;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.inject.Named;

import br.com.softblue.loucademia.application.service.AlunoService;
import br.com.softblue.loucademia.application.util.StringUtils;
import br.com.softblue.loucademia.domain.aluno.Aluno;

@Named
@RequestScoped
public class AlunoBean implements Serializable {
	
	@EJB
	private AlunoService alunoService;
	
	@Inject
	private FacesContext facesContext;
	
	private Aluno aluno = new Aluno();
	
	private String matricula;
	
	private String titulo = "Novo aluno";
	
	
	public String gravar() {
		alunoService.createOrUpdate(aluno);
		facesContext.addMessage(null, new FacesMessage("Dados gravados com sucesso"));
		return null;
	}
	
	public void carregar() {
		if (!StringUtils.isVazio(matricula)) {
			aluno = alunoService.findByMatricula(matricula);
			titulo = "Alterar aluno";
		}
	}
	
	public Aluno getAluno() {
		return aluno;
	}

	public void setAluno(Aluno aluno) {
		this.aluno = aluno;
	}

	public String getMatricula() {
		return matricula;
	}

	public void setMatricula(String matricula) {
		this.matricula = matricula;
	}
	
	public String getTitulo() {
		return titulo;
	}
}
1 curtida

Na minha época, você não precisava da anotação @Inject para o faces context, visto que o mesmo é uma classe singleton e é instanciada quando o core do JSF é iniciado.

1 curtida

Olá @Luis_Rabelo

Cria uma classe que será responsável por ter dar uma instância de FacesContext (Produtora)

public class FacesContextFactory implements Serializable{

    private static final long serialVersionUID = 1L;

    @Produces
    @RequestScoped
    public FacesContext getFacesContext(){
        return FacesContext.getCurrentInstance();
    }

}

Apenas cria ela e faz o teste :+1:

1 curtida

Boa noite, utilizei as duas formas mas não funcionou, tirando o @Inject, não dá erro, mas porém as mensagens não são exibidas!!