Como carregar uma SelectOneListBox com CommandButton no JSF?

3 respostas
S

Estou tentando popular uma list box com um commandButton mas não estou conseguindo. Assim que clicar no commandButton vai no banco para carregar a listBox.

Esse é o código do meu commandButton no XHTML

<p:commandButton id="btnPesquisar"	value="#{messages.CRONO_COMANDO_PESQUISAR}" "actionListener="#{mbMantemCronograma.pesquisar()}" update="template_content:form" ajax="false" icon="ui-icon-check" >
</p:commandButton>

E esse da listBox:
<p:selectOneListbox id="lista" value="#{mbMantemCronograma.etapa}" > <f:selectItems value="#{mmbMantemCronograma.listaEtapa}" var="etapa" itemValue="#{etapa}" itemLabel="#{etapa.descricao}" /> </p:selectOneListbox>

E esse código é o Managed Bean:

@ManagedBean(name = mbMantemCronograma)

@SessionScoped

public class MbMantemCronograma {

private static final long serialVersionUID = 1L;
@EJB
private MantemCronogramaDLO mantemCronagramaDLO;

@EJB
private MantemEtapaDLO mantemEtapaDLO;

private Cronograma cronograma;

private Etapa etapa;

private List<Cronograma> listaCronograma;

private List<Etapa> listaEtapa;


@PostConstruct
public void init(){
	etapa = new Etapa();
}

public void pesquisar(){
	carregarEtapa();
}

private void carregarEtapa(){
	listaEtapa = new ArrayList<Etapa>();
	listaEtapa = mantemEtapaDLO.carregarDados();
}

public Cronograma getCronograma() {
	return cronograma;
}

public void setCronograma(Cronograma cronograma) {
	this.cronograma = cronograma;
}

public Etapa getEtapa() {
	return etapa;
}

public void setEtapa(Etapa etapa) {
	this.etapa = etapa;
}

public List<Cronograma> getListaCronograma() {
	return listaCronograma;
}

public void setListaCronograma(List<Cronograma> listaCronograma) {
	this.listaCronograma = listaCronograma;
}

public List<Etapa> getListaEtapa() {
	return listaEtapa;
}

public void setListaEtapa(List<Etapa> listaEtapa) {
	this.listaEtapa = listaEtapa;
}

}

Debugando a listaEtapas é carregada depois que clico no botão Pesquisar, a tela da um flick de atualizando mas a ListBox continua sem dados.

3 Respostas

L

Não entendo de JSF mas no seu CommandButton tem uma abertura de aspas na actionListener que acho que não é preciso.

drsmachado

Tirando o que o @leonardo-chm disse sobre a abertura de aspas inútil ali, você define um actionListener e diz o que deve ser atualizado (propriedade update do p:commandButton), mas diz que a requisição não é ajax…
Das duas uma, ou você muda remove o update, mantém ajax como false e substitui o actionListener por action ou você troca o ajax para true ou remove essa propriedade.

thimor
<p:commandButton id="btnPesquisar" value="#{messages.CRONO_COMANDO_PESQUISAR}" 
                 action="#{mbMantemCronograma.carregarEtapa()}" update="lista" process="@this" 
                 icon="ui-icon-check" />

O metodo que vi no seu bean mais provavel de ser chamado eh esse carregarEtapa() pois eh ele que pega os dados do banco e joga na lista

Criado 9 de fevereiro de 2017
Ultima resposta 10 de fev. de 2017
Respostas 3
Participantes 4