Pessoal,
Eu estou tentando com que uma classe bean utilize uma lista que foi previamente carregada em outra classe Bean.
Para isso, estou utilizando os seguintes métodos: FacesContext.getCurrentInstance().getExternalContext().getFlash().get(“lista”)); e FacesContext.getCurrentInstance().getExternalContext().getFlash().put(“lista”, this.listaExibicao); só que não está dando certo.
O bean que carrega a lista é o seguinte:
package br.pe.gov.ses.pme.mb;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import br.pe.gov.ses.pme.dao.DAO;
import br.pe.gov.ses.pme.dao.QuantitativoDAO;
import br.pe.gov.ses.pme.dao.QuantitativoExibicaoDAO;
import br.pe.gov.ses.pme.modelo.Especialidade;
import br.pe.gov.ses.pme.modelo.Hospital;
import br.pe.gov.ses.pme.modelo.Quantitativo;
import br.pe.gov.ses.pme.modelo.QuantitativoExibicao;
@ManagedBean
@ViewScoped
public class QuantitativoExibicaoBean implements Serializable{
private QuantitativoExibicao quantitativoExibicao = new QuantitativoExibicao();
private DAO<QuantitativoExibicao> dao = new DAO<QuantitativoExibicao>(QuantitativoExibicao.class);
private DAO<Especialidade> daoEspecialidade = new DAO<Especialidade>(Especialidade.class);
private List<QuantitativoExibicao> listaExibicao;
private List<Especialidade> listaEspecialidade;
private Date data;
private int turno;
private int show;
@Inject
private QuantitativoDAO quantitativoDAO;
@Inject
private QuantitativoExibicaoDAO quantExibicaoDAO;
public QuantitativoExibicaoBean(){
}
@PostConstruct
public void init(){
this.listaExibicao = new ArrayList();
this.setListaEspecialidade(this.daoEspecialidade.listarTodos());
this.show = 0;
//criarExibicao();
}
public QuantitativoExibicaoBean(QuantitativoExibicaoDAO exibDAO){
this.quantExibicaoDAO = exibDAO;
}
/*
* Método que monta as informações para exibição
*/
public String criarExibicao(){
String url = "";
boolean existePlantao = this.quantitativoDAO.existePlantao(this.data, this.turno);
if(existePlantao){
for(int i = 0; i < this.listaEspecialidade.size(); i++){
Especialidade tempEspecialidade = this.listaEspecialidade.get(i);
List<Quantitativo> tempListaQuantitativo = this.setarListaExibicao(tempEspecialidade, this.data, this.turno);
QuantitativoExibicao tempExibicao = new QuantitativoExibicao();
tempExibicao.setEspecialidade(tempEspecialidade);
tempExibicao.setQuantitativo(tempListaQuantitativo);
this.listaExibicao.add(tempExibicao);
}
this.show = 1;
url = "ExibicaoQuantitativo.jsf?faces-redirect=true";
FacesContext.getCurrentInstance().getExternalContext().getFlash().put("lista", this.listaExibicao);
}else{
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN, "Não há exibição para esse plantão", ""));
url = "EscolhaExibicao.jsf?faces-redirect=true";
}
return url;
}
public List<Quantitativo> setarListaExibicao(Especialidade especialidade, Date data, int turno){
List<Quantitativo> resultante = new ArrayList();
List<Quantitativo> filtrado = this.quantitativoDAO.procurarQuantitativo(data, turno, especialidade);
List<Quantitativo> restante = this.quantitativoDAO.setarHospitaisQuantitativo();
int tamanho = filtrado.size() + restante.size();
int indice = 0;
resultante = filtrado;
for(int i = filtrado.size(); i< tamanho; i++){
resultante.add(i, restante.get(indice));
indice++;
}
return resultante;
}
public QuantitativoExibicao getExibicaoQuantitativo() {
return quantitativoExibicao;
}
public void setExibicaoQuantitativo(QuantitativoExibicao exibicaoQuantitativo) {
this.quantitativoExibicao = exibicaoQuantitativo;
}
public List<QuantitativoExibicao> getListaExibicao() {
return listaExibicao;
}
public void setListaExibicao(List<QuantitativoExibicao> lista) {
this.listaExibicao = lista;
}
public DAO<QuantitativoExibicao> getDao() {
return dao;
}
public void setDao(DAO<QuantitativoExibicao> dao) {
this.dao = dao;
}
public QuantitativoExibicaoDAO getQuantExibicaoDAO() {
return quantExibicaoDAO;
}
public void setQuantExibicaoDAO(QuantitativoExibicaoDAO quantExibicaoDAO) {
this.quantExibicaoDAO = quantExibicaoDAO;
}
public List<Especialidade> getListaEspecialidade() {
return listaEspecialidade;
}
public void setListaEspecialidade(List<Especialidade> listaEspecialidade) {
this.listaEspecialidade = listaEspecialidade;
}
public DAO<Especialidade> getDaoEspecialidade() {
return daoEspecialidade;
}
public void setDaoEspecialidade(DAO<Especialidade> daoEspecialidade) {
this.daoEspecialidade = daoEspecialidade;
}
public QuantitativoDAO getQuantitativoDAO() {
return quantitativoDAO;
}
public void setQuantitativoDAO(QuantitativoDAO quantitativoDAO) {
this.quantitativoDAO = quantitativoDAO;
}
public Date getData() {
return data;
}
public void setData(Date data) {
this.data = data;
}
public int getTurno() {
return turno;
}
public void setTurno(int turno) {
this.turno = turno;
}
public int getShow() {
return show;
}
public void setShow(int show) {
this.show = show;
}
}
E o bean que precisa ler a lista é o seguinte:
package br.pe.gov.ses.pme.mb;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import br.pe.gov.ses.pme.modelo.QuantitativoExibicao;
@ManagedBean
@ViewScoped
public class ExibicaoBean {
private List<QuantitativoExibicao> listaExibicao;
@PostConstruct
public void init(){
this.setListaExibicao((List<QuantitativoExibicao>) FacesContext.getCurrentInstance().getExternalContext().getFlash().get("lista"));
}
public List<QuantitativoExibicao> getListaExibicao() {
return listaExibicao;
}
public void setListaExibicao(List<QuantitativoExibicao> listaExibicao) {
this.listaExibicao = listaExibicao;
}
}
O problema é que a listaExibicao da classe ExibicaoBean não é carregada.
Alguém sabe como resolver isso?