Feras,
estou usando richFaces para renderizar um h:selectOneMenu conforme abaixo
<h:selectOneMenu style="width:400px" id="idSistema" value="#{permissoesMbean.idMenu}" valueChangeListener="#{permissoesDelegate.getItemSistema}">
<f:selectItem itemLabel="Selecione" itemValue="0" />
<f:selectItems value="#{permissoesMbean.selectSistema}" itemValue=""/>
<a4j:support reRender="idItemSistema" event="onchange" ajaxSingle="true" />
</h:selectOneMenu>
ele até executa o método abaixo, mas não estou conseguindo capturar o valor do atributo “event”
public String getItemSistema(ValueChangeEvent event){
System.out.println("Valor222: " + event.getNewValue());
}
Como você está usando o selectItems não há porquê usar o itemValue, retire-o
Fera
já fiz o teste sem ele mas não resolveu
Como você populou esse h:selectOneMenu
conforme abaixo
List<MenuTO> listaSistemas = new ArrayList<MenuTO>();
private List<SelectItem> selectSistema;
public List<SelectItem> getSelectSistema() {
listaSistemas = permissoesDelegate.getSistemas();
selectSistema = new ArrayList<SelectItem>();
SelectItem si = new SelectItem();
for (MenuTO itemMenu : listaSistemas) {
si = new SelectItem();
si.setLabel(itemMenu.getIdMenu().toString());
si.setLabel(itemMenu.getDescMenu());
selectSistema.add(si);
}
return selectSistema;
}
está aí o erro você está definindo 2 vezes o label
si.setLabel(itemMenu.getIdMenu().toString());
si.setLabel(itemMenu.getDescMenu());
teste esse código abaixo
[code]
public List getSelectSistema() {
listaSistemas = permissoesDelegate.getSistemas();
selectSistema = new ArrayList();
SelectItem si = new SelectItem();
for (MenuTO itemMenu : listaSistemas) {
si =
Integer idMenu = si.setLabel(itemMenu.getIdMenu();
String descricaoMenu = itemMenu.getDescMenu();
selectSistema.add(new SelectItem(id, descricaoMenu));
}
return selectSistema;
}[/code]
Fera,
realmente era isso…resolveu meu problema, muito obrigado segue como ficou meu código
public List<SelectItem> getSelectSistema() {
listaSistemas = permissoesDelegate.getSistemas();
selectSistema = new ArrayList<SelectItem>();
for (MenuTO itemMenu : listaSistemas) {
String idMenu = itemMenu.getIdMenu().toString();
String descricaoMenu = itemMenu.getDescMenu();
selectSistema.add(new SelectItem(idMenu, descricaoMenu));
}
return selectSistema;
}
veja que não precisa necessariamente do método.
Eu crio uma variável que receberá o id do selecionado: #{configuracaoBean.idModalidadeCategoria}
<h:selectOneMenu value="#{configuracaoBean.idModalidadeCategoria}">
<f:selectItems value="#{configuracaoBean.listaModalidadeCategoria}"
var="modalidade"
itemValue="#{modalidade.id}"
itemLabel="#{modalidade.descricao}" />
</h:selectOneMenu>
Depois para obter o selecionado, itero na lista o retiro o objeto com aquele id.