Pessoal,
Estou com o seguinte problema: eu tenho um menu na minha aplicação. Eu preciso que dependendo do menuitem clicado pelo usuário, uma variável seja setada com um determinado valor. Esse valor será paramêtro de um método da classe bean. Infelizmente não estou conseguindo fazer isso.
O código do menu é o seguinte:
<p:submenu label="Exibição" icon="ui-icon-video">
<p:submenu label="Quantitativo">
<p:menuitem value="Diurno" url="ExibicaoQuantitativo.jsf">
<f:setPropertyActionListener target="#{exibicaoQuantitativoBean.plantaoSelecionado}" value="1"></f:setPropertyActionListener>
</p:menuitem>
<p:menuitem value="Noturno" url="ExibicaoQuantitativo.jsf">
<f:setPropertyActionListener target="#{exibicaoQuantitativoBean.plantaoSelecionado}" value="2"></f:setPropertyActionListener>
</p:menuitem>
</p:submenu>
<p:menuitem value="Mensagens" url="ExibicaoMensagem.jsf"></p:menuitem>
</p:submenu>
Eu preciso que quando o usuário clique o menuitem Diurno, a variável plantaoSelecionado seja setada com o valor 1, e se o menuitem Noturno for clicado, a variável plantaoSelecionado seja setada com o valor 2.
O meu Bean:
package br.pe.gov.ses.pme.mb;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.bean.ViewScoped;
import javax.inject.Inject;
import br.pe.gov.ses.pme.dao.DAO;
import br.pe.gov.ses.pme.dao.EspecialidadeDAO;
import br.pe.gov.ses.pme.dao.ExibicaoQuantitativoDAO;
import br.pe.gov.ses.pme.dao.QuantitativoDAO;
import br.pe.gov.ses.pme.modelo.Especialidade;
import br.pe.gov.ses.pme.modelo.Hospital;
import br.pe.gov.ses.pme.modelo.Mensagem;
import br.pe.gov.ses.pme.modelo.Quantitativo;
@ManagedBean
@SessionScoped
public class ExibicaoQuantitativoBean {
private Especialidade especialidade = new Especialidade(); //especialidade que será exibida
private Hospital hospital = new Hospital();
private Quantitativo quantitativo = new Quantitativo(); //contém o número de especialistas e de encaminhamentos realizados
private List<Especialidade> listaEspecialidade;
private List<Hospital> listaHospital;
private List<Quantitativo> listaQuantitativo; //lista dos quantitativos cadastrados
private List<Quantitativo> listaQuantitativoApresentado = new LinkedList<Quantitativo>(); //lista dos quantitativos que serão apresentados no painel
private DAO<Especialidade> daoEspecialidade = new DAO<Especialidade>(Especialidade.class);
private DAO<Hospital> daoHospital = new DAO<Hospital>(Hospital.class);
int contadorEspecialidade;
int plantaoSelecionado = 1;
public int getPlantaoSelecionado() {
return plantaoSelecionado;
}
public void setPlantaoSelecionado(int plantaoSelecionado) {
this.plantaoSelecionado = plantaoSelecionado;
}
@Inject
private ExibicaoQuantitativoDAO quantitativoDAO;
public ExibicaoQuantitativoBean(){
}
public ExibicaoQuantitativoBean(ExibicaoQuantitativoDAO dao){
this.quantitativoDAO = dao;
}
@PostConstruct
public void init(){
this.listaQuantitativoApresentado = new ArrayList();
this.setListaEspecialidade(this.daoEspecialidade.listarTodos()); //lista todas as especialidades cadastradas
this.setListaHospital(this.quantitativoDAO.listarHospitaisOrdenado()); //lista todos os hospitais em ordem alfabética
// initListaHospital();
this.contadorEspecialidade = 0;
}
/*
* Método que carrega todos os hospitais na lista de Quantitativo que será apresentada no painel
*/
public void initListaHospital(){
for(int i = 0; i < this.listaHospital.size(); i++){
quantitativo.setHospital(this.listaHospital.get(i));
this.listaQuantitativoApresentado.add(quantitativo);
}
}
/*
* Método que retorna uma especialidade por vez.
*/
public Especialidade getEspecialidade() {
if(this.contadorEspecialidade == this.listaEspecialidade.size()){
this.contadorEspecialidade = 0;
this.especialidade = this.listaEspecialidade.get(contadorEspecialidade);
this.setListaQuantitativoApresentado(this.especialidade, 1);
}else{
this.especialidade = this.listaEspecialidade.get(contadorEspecialidade);
this.contadorEspecialidade++;
this.setListaQuantitativoApresentado(this.especialidade, this.getPlantaoSelecionado());
}
return especialidade;
}
/*
* Método que seta a listaQuantitativoApresentado com os valores para uma determinada especialidade e um determinado plantão
*/
public void setListaQuantitativoApresentado(Especialidade especialidade, int plantao) {
//Obtendo uma lista de Quantitativos com uma determinada especialidade e determinado plantão
List<Quantitativo> filtrado = this.quantitativoDAO.filtrarQuantitativoPorEspecialidade(especialidade, plantao);
//Lista com os restantes de hospitais
List<Quantitativo> restante = this.quantitativoDAO.setarHospitaisQuantitativo();
int tamanho = filtrado.size() + restante.size();
int indice = 0;
/*System.out.println("filtrado: "+ filtrado.size());
System.out.println("restante: "+ restante.size());*/
this.listaQuantitativoApresentado = filtrado;
for(int i = filtrado.size(); i< tamanho; i++){
this.listaQuantitativoApresentado.add(i, restante.get(indice));
indice++;
}
}
public void setEspecialidade(Especialidade especialidade) {
this.especialidade = especialidade;
}
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 List<Hospital> getListaHospital() {
return listaHospital;
}
public void setListaHospital(List<Hospital> listaHospital) {
this.listaHospital = listaHospital;
}
public Hospital getHospital() {
return hospital;
}
public void setHospital(Hospital hospital) {
this.hospital = hospital;
}
public DAO<Hospital> getDaoHospital() {
return daoHospital;
}
public void setDaoHospital(DAO<Hospital> daoHospital) {
this.daoHospital = daoHospital;
}
public Quantitativo getQuantitativo() {
return quantitativo;
}
public void setQuantitativo(Quantitativo quantitativo) {
this.quantitativo = quantitativo;
}
public List<Quantitativo> getListaQuantitativo() {
return listaQuantitativo;
}
public void setListaQuantitativo(List<Quantitativo> listaQuantitativo) {
this.listaQuantitativo = listaQuantitativo;
}
public List<Quantitativo> getListaQuantitativoApresentado() {
return listaQuantitativoApresentado;
}
}