Pessoal boa tarde.
Estou fazendo uma chamada ajax para atualização de uma lista.
O processo é o seguinte:
1- Eu seleciono um item em uma primeira lista chamada Orgão.
2- No change eu tenho valueChangeListener="#{bean.retornaServicos}"
O que está acontecendo é: “O retorno ajax cria um novo componente SelectOneMenu”;
Eu preciso apenas de alterar a lista de opções do SelectOneMenu, os SelectItems.
Existe uma maneira?
Obrigado!
Thiago
posta o codigo que podemos ajudar.
<!-- SERVICOS ORGAO -->
<div id=“container_orgaos_publicos” class=“ui-grid-a”>
<div id=“container_orgaos_publicos_a” class=“ui-block-a”>
<div data-role=“fieldcontain”>
<h:outputLabel for=“orgaoPublico” value="#{msgs[‘app.page.tipoidentificador.label’]}" styleClass=“select” />
<h:selectOneMenu id=“orgaoPublico"
value=”#{ReceitaOrgaosEstaduais.orgaoPublico}“
valueChangeListener=”#{ReceitaOrgaosEstaduais.configurarPesquisaServicosOrgaosPublicos}“
required=“true” >
<f:selectItem itemLabel=”#{msgs[‘app.page.orgaopublico.selecionar’]}" itemValue="" />
<f:selectItems value="#{ReceitaOrgaosEstaduais.listarTodosOrgaosPublicos}“
var=“orgaoPublico"
itemLabel=”#{orgaoPublico.descricao}“
itemValue=”#{orgaoPublico.id}” />
<f:ajax render="@form"
event=“change"
execute=”@this"
onevent=“refreshSelectServicosOrgaosPublicos”
/>
</h:selectOneMenu>
</div>
</div>
<div id="container_orgaos_publicos_b" class="ui-block-b">
</div>
</div>
<!-- SERVICOS ORGAO -->
<div id=“container_servicos_orgaos_publicos” class=“ui-grid-a”>
<div id=“container_servicos_orgaos_publicos_a” class=“ui-block-a”>
<div data-role=“fieldcontain”>
<h:outputLabel for=“servicoOrgaoPublico” value="#{msgs[‘app.page.servicoorgaopublico.label’]}" styleClass=“select” />
<h:selectOneMenu id=“servicoOrgaoPublico"
value=”#{ReceitaOrgaosEstaduais.servicoOrgaoPublico}“
required=“true” >
<f:selectItem itemLabel=”#{msgs[‘app.page.servicoorgaopublico.selecionar’]}" itemValue="" />
<f:selectItems id=“itensServicos” value="#{ReceitaOrgaosEstaduais.listarServicosOrgaoPublico}“
var=“servicoOrgaoPublico"
itemLabel=”#{servicoOrgaoPublico.descricao}“
itemValue=”#{servicoOrgaoPublico.id.codigoServico}” />
</h:selectOneMenu>
</div>
</div>
<div id=“container_servicos_orgaos_publicos_b” class=“ui-block-b”></div>
</div>
<!–metodos da classe bean -->
@SuppressWarnings(“unchecked”)
public List<ServicoOrgaoPublico> getListarServicosOrgaoPublico(){
if(orgaoPublico!=null){
return this.servicoOrgaoPublicoService.buscarPorCodigoOrgaoPublico(orgaoPublico);
}//end if
return Collections.EMPTY_LIST;
}//end method
public void configurarPesquisaServicosOrgaosPublicos( ValueChangeEvent event ){
String value = event.getNewValue().toString();
if( StringUtils.isNotBlank(value)){
this.orgaoPublico = Integer.parseInt(value);
if(this.orgaoPublico==0){
this.orgaoPublico = null;
}//end if
}else{
this.orgaoPublico = null;
}//end else
}//end method
No retorno os atributos setados nas tags através de jquery são removidos.
Os atributos são setados da seguinte forma:
jQuery("#orgaoPublico").attr( “data-native-menu”, “false”);
jQuery("#orgaoPublico").attr( “data-mini”, “true”);
jQuery("#orgaoPublico").attr( “data-placeholder”, “true”);
//servico orgao publico
jQuery("#servicoOrgaoPublico").attr( “data-native-menu”, “false”);
jQuery("#servicoOrgaoPublico").attr( “data-mini”, “true”);
jQuery("#servicoOrgaoPublico").attr( “data-placeholder”, “true”);