Boa tarde, colegas.
Tenho esse selectOneMenu:
<h:selectOneMenu id = "selectPeriodo" valueChangeListener="#{lotacaoBEAN.selecionarPeriodo}">
<f:selectItem itemLabel="-- Selecionar Periodo --" itemValue="0"/>
<f:selectItems value="#{periodoBEAN.periodoLista}"/>
<a4j:support event="onchange" reRender="selectLotacao"/>
</h:selectOneMenu>
A propriedade periodoBEAN.periodoLista é do tipo ArrayList onde o populo desta forma:
periodoLista.add( new SelectItem( "090505", "String 1" ) );
periodoLista.add( new SelectItem( "090506", "String 2" ) );
periodoLista.add( new SelectItem( "090507", "String 3" ) );
Esse selectOneMenu é preenchido normalmente. Só que o seguinte: Estou tentando trabalhar com outro selectOneMenu utilizando richfaces a4j e não funciona.
Não consigo passar o valor “090505”, que está dentro do SelectItem.
Se eu fizer assim, dá certo:
<h:selectOneMenu id = "selectPeriodo" valueChangeListener="#{lotacaoBEAN.selecionarPeriodo}">
<f:selectItem itemLabel="-- Selecionar Periodo --" itemValue="0"/>
<f:selectItem itemLabel="String 1" itemValue="090505"/>
<f:selectItem itemLabel="String 2" itemValue="090506"/>
<f:selectItem itemLabel="String 3" itemValue="090507"/>
<a4j:support event="onchange" reRender="selectLotacao"/>
</h:selectOneMenu>
Como posso fazer para esse SelectOneMenu conseguir passar um “itemValue” dentro do
<f:selectItems value="#{periodoBEAN.periodoLista}"/> ?
no seu Bean é só setar a variavel que está no value do componente
selecionarPeriodo = "valor desejado";
desta maneira vai ficar selecionado o item com o value desejado.
Olá Joed.
Fiz como você me falou, mas também não consegui pegar o primeiro valor do SelectItem. A String periodoSelecionado fica com o valor que eu inicializar e é passado esse valor para o método selecionarPeriodo, e não o atualizado pelo SelectOneMenu.
O managed bean:
private String periodoSelecionado;
public String getPeriodoSelecionado() {
return periodoSelecionado;
}
public void setPeriodoSelecionado(String periodoSelecionado) {
this.periodoSelecionado = periodoSelecionado;
}
//Executa quando for alterado o Período
public void selecionarPeriodo(ValueChangeEvent evento){
try
{
System.out.println(periodoSelecionado);
//lotacoesPorPeriodo = new LotacaoDAO().getLotacoesSelectItem(evento.getNewValue().toString() , "5840");
lotacoesPorPeriodo = new LotacaoDAO().getLotacoesSelectItem(getPeriodoSelecionado(), "5840");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
e o meu SelectOneMenu
<a4j:form>
<h:selectOneMenu value="#{lotacaoBEAN.periodoSelecionado}" id = "selectPeriodo" valueChangeListener="# lotacaoBEAN.selecionarPeriodo}">
<f:selectItem itemLabel="-- Selecionar Periodo --" itemValue="0"/>
<f:selectItems value="#{periodoBEAN.periodoLista}"/>
<a4j:support event="onchange" reRender="selectLotacao"/>
</h:selectOneMenu>
</a4j:form>
Mais alguma dica?
Olá colegas.
Voltando a forma anterior, que eu tinha postado antes, verifiquei o seguinte.
Apesar de o meu ArrayList ser populado dessa forma:
periodoLista.add( new SelectItem( "090505", "String 1" ) );
periodoLista.add( new SelectItem( "090506", "String 2" ) );
verifiquei o código fonte gerado e o select html estava dessa forma:
<select>
<option value="[javax.faces.model.SelectItem@ea3932, javax.faces.model.SelectItem@15118a7, javax.faces.model.SelectItem@1299f7e, javax.faces.model.SelectItem@1a631cc, javax.faces.model.SelectItem@f6398, javax.faces.model.SelectItem@53a9d5, javax.faces.model.SelectItem@b2e752, javax.faces.model.SelectItem@170ec24]">String 1</option>
<option value="[javax.faces.model.SelectItem@ea3932, javax.faces.model.SelectItem@15118a7, javax.faces.model.SelectItem@1299f7e, javax.faces.model.SelectItem@1a631cc, javax.faces.model.SelectItem@f6398, javax.faces.model.SelectItem@53a9d5, javax.faces.model.SelectItem@b2e752, javax.faces.model.SelectItem@170ec24]">String 2</option>
</select>
Por isso que o método do valueChangeListener do SelectOneMenu não dá certo…
Alguém sabe como posso resolver esse problema?
como vc ta declarando o seu periodoLista??