Coloque um ouvinte no selectOneMenu para um evento de mudança de valor.
Como fazer isso?
Esquece as funções itemsNome1 e itemNome2. Haverá uma única função itemsNome no ManagedBean. (Depois vc vai enterder o porquê)
Crie uma nova função do tipo “public void tipoMudou(ValueChangedEvent event)” no ManagedBean, o nome da função não importa muito, o importante é o retorno void e o parâmetro ValueChangedEvent do pacote javax.faces.event.ValueChangedEvent. Esse objeto event tem os métodos getNewValue() e getOldValue(), pega o novo valor e ponha num atributo privado (nem coloca get e set pra ele!) com o nome, sei lá, “tipo”.
No método getItemsNome faça o algoritmo: se tipo for sistema operacional, retorna array1, se for browser, retorna array2.
No primeiro selectOneMenu, faça assim:
<h:selectOneMenu id=“tipo” value="#{requisito.tipo}" onchange=“submit()” immediate=true valueChangerListener="#{requisito.tipoMudou}">
<f:selectItems id=“itemsTipo” value="#{requisito.itemsTipo}" />
</h:selectOneMenu>
O que foi feito?
Sempre quando muda o valor da caixa de seleção, é mandado um submit no formulário, devido a “onchange”. Como existe um ouvinte registrado, ele é chamado e guarda o novo valor dentro do ManagedBean. Como existe immediate=“true”, o processo de validação será pulado (até porque não precisa nessa etapa). No segundo selectOneMenu será retornado apenas o array desejado, porque existe uma lógica condicional dependendo do atributo tipo, que foi modificado pelo listener.
Ok?
L
Leonardo3001
Eu de novo.
Ia me esquecendo, no método ouvinte (aquele que tem ValueChangedEvent como parâmetro) coloque na 1a linha:
Esqueça isso, va no www.jboss.org, baixe o ajax4jsf e la tem exemplo de como você fazer isso sem ter que dar refresh, vai ficar mais elegante.
L
lektole
aê galera, valeu mesmo pelas dicas!!
Giulliano
afamorim:
Esqueça isso, va no www.jboss.org, baixe o ajax4jsf e la tem exemplo de como você fazer isso sem ter que dar refresh, vai ficar mais elegante.
o problema é deixar esse compnete funcionando…eu baixei os jar e até fiz funcionar muito bem…tanto o ajax4jsf quanto o sandbox (inpput SuggestedText) que vai autocompletando conforme vc vai escrevendo…mas aí de repente…
o ajax4jsf deixou de funcionar…ok ok …deixei pra lá…dali algumas semanas quem deixou de funcionar foi o sandbox…
sinceramente…o jsf ainda esta muito imaturo…ora que as listas de discussões estão na proporção de 70% norte-Americana e 30% Brasuca…