Aleksandro 30 de out. de 2012
O keepAlive guarda apenas o estado dos campos ajax …
tente colocar assim:
<h:selectOneMenu value="#{simpleSearch.cidade}" style="width:230px;" id="comboCidade">
<f:selectItem itemValue="" itemLabel="-- Selecione --" />
<f:selectItems value="#{simpleSearch.cidades}" />
</h:selectOneMenu>
<a4j:support event="onchange" reRender="comboCidade" immediate="true" ajaxSingle="true" />
Não me recordo se é isto, faça um teste …
desenhotorix 30 de out. de 2012
Não entendi o que você quiz, Aleksandro, porém fiz alguns testes e debugs…o que acontece é o seguinte:
ao mudar o combo de estado a variavel #{simpleSearch.uf} não está sendo setada, e o mais curioso que a função q é chamada é a getCidade e não getCidades q monta o combo2…
tentei montar o combo1 assim:
<h:selectOneMenu value="#{simpleSearch.uf}" style="width:230px;" id="uf">
<f:selectItem itemValue="" itemLabel="-- Selecione --" />
<f:selectItems value="#{simpleSearch.ufs}" />
<a4j:support event="onchange" reRender="uf,comboCidade" immediate="true" ajaxSingle="true" >
<a4j:actionparam name="uf" value="document.getElementById('uf').value" assignTo="#{simpleSearch.uf}" noEscape="true" />
</a4j:support>
</h:selectOneMenu>
usando o a4j:actionparam…mas tbm não funcionou
desenhotorix 30 de out. de 2012
Alguem se candidata a tentar me ajudar?
leonardo.m4a 30 de out. de 2012
Olá desenhotorix.
Tente adicionar a instrução “action” em a4j:suport, segue exemplo:
& lt ; a4j : support event = "onchange" reRender = "comboCidade" action = "#{simpleSearch.getCidades}" /& gt ;
Att,
Leonardo K. Masuda
desenhotorix 30 de out. de 2012
Olá leonardo.m4a…também ja fiz isso e não funcionou.
Testei fazendo
< a4j : support event = "onchange" reRender = "comboCidade" action = "#{simpleSearch.cidades}" / >
Isso é tão trivial, inclusive há algo similar no meu projeto e funciona, porém esse caso especifico ta emperrado. E sinceramente não sei mais o que fazer.
Mas valeu pela dica…Se alguem mais souber de um “truque”…estou todos ouvidos
Aleksandro 30 de out. de 2012
O meu esta assim e funciona na boa …inclusive quando eu fiz peguei o exemplo do http://serjaum.wordpress.com/2009/08/28/jsf-tutorial-combos-aninhados-estadoscidades/ da uma olhada …
<body>
<f:view>
<h:form>
<h:panelGrid columns= "2" >
<h:outputLabel for= "estado" value= "Estado " />
<h:selectOneMenu id= "estado" value= "#{regiaoMB.estado.id}" >
<f:selectItem itemValue= "" itemLabel= "Selecione..." />
<f:selectItems value= "#{regiaoMB.estados}" />
<a4j:support event= "onchange" ajaxSingle= "true"
action= "#{regiaoMB.actionCarregaCidades}" reRender= "estado,cidade" />
</h:selectOneMenu>
<h:outputLabel for= "cidade" value= "Cidade " />
<h:selectOneMenu id= "cidade" value= "#{regiaoMB.cidade.id}" >
<f:selectItem itemValue= "" itemLabel= "Selecione..." />
<f:selectItems value= "#{regiaoMB.cidades}" />
</h:selectOneMenu>
</h:panelGrid>
</h:form>
</f:view>
</body>
leonardo.m4a 31 de out. de 2012
Também utilizei da mesma forma que o Aleksandro citou e funciona perfeitamente.
Segue exemplo de como utilizei:
<h:selectOneMenu id= "categoria" value= "#{vndProdHANDLER.id_categoria_sel}" >
<f:selectItem itemLabel= "" itemValue= "0" />
<f:selectItems value= "#{vndProdHANDLER.selectItemCategoria}" />
<a4j:support event= "onchange" reRender= "subcategoria" action= "#{vndProdHANDLER.carregaSubcategoria}" />
</h:selectOneMenu>
<h:selectOneMenu id= "subcategoria" value= "#{vndProdHANDLER.id_subcategoria_sel}" >
<f:selectItem itemLabel= "" itemValue= "0" />
<f:selectItems value= "#{vndProdHANDLER.selectItemSubcategoria}" />
</h:selectOneMenu>
Bean:
public void carregaSubcategoria (){
selectItemSubcategoria = new ArrayList < SelectItem > ();
SubcategoriaDAO subcategoriaDAO = SubcategoriaDAO . getInstance ();
listaSubcategoriaENTITY = subcategoriaDAO . getListaSubcategoriaByCategoria ( this . getId_categoria_sel ());
for ( SubcategoriaENTITY subcategoriaENTITY : listaSubcategoriaENTITY ){
selectItemSubcategoria . add ( new SelectItem ( subcategoriaENTITY . getId_subcategoria (), subcategoriaENTITY . getNome () ) );
}
}
desenhotorix 31 de out. de 2012
Valeu a todos que me ajudaram…mas resolvi o problema, porem não entendi porque não funcionava.
Antes desses meu comboboxes havia uma verificação
<h:outputText rendered="#{requestScope['msg'] == 'NO_COOKIE'}">
ou seja, exibe o combo se tiver como retorno essa string…a verificação funcionava, porem ela travava os combos.
retirei-a…e funcionou perfeitamente.
Mas fica a dúvida, por quê ? Será que tem alguma coisa a ver com o “requestScope”