H:selectOneMenu com a4j:support

7 respostas
R

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());
}

7 Respostas

thiago.correa

Como você está usando o selectItems não há porquê usar o itemValue, retire-o

R

Fera

já fiz o teste sem ele mas não resolveu

thiago.correa

Como você populou esse h:selectOneMenu

R

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;
	}
thiago.correa

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

public List<SelectItem> getSelectSistema() {
		listaSistemas = permissoesDelegate.getSistemas();
		selectSistema = new ArrayList<SelectItem>();
		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;
	}
R

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;  
    }
Andre.flu

veja que não precisa necessariamente do método.

Eu crio uma variável que receberá o id do selecionado: #{configuracaoBean.idModalidadeCategoria}

&lt;h:selectOneMenu value="#{configuracaoBean.idModalidadeCategoria}"&gt;
                    &lt;f:selectItems value="#{configuracaoBean.listaModalidadeCategoria}"
                                   var="modalidade"
                                   itemValue="#{modalidade.id}"
                                   itemLabel="#{modalidade.descricao}" /&gt;
                &lt;/h:selectOneMenu&gt;

Depois para obter o selecionado, itero na lista o retiro o objeto com aquele id.

Criado 11 de dezembro de 2014
Ultima resposta 5 de jan. de 2015
Respostas 7
Participantes 3