Alterar apenas elementos f:selectItems

2 respostas
tavelars

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

2 Respostas

R

posta o codigo que podemos ajudar.

tavelars

<!-- 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=”#{<a href="http://orgaoPublico.id">orgaoPublico.id</a>}” />

<f:ajax render="<a class="mention" href="/u/form">@form</a>"

event=“change"

execute=”@this"

onevent=“refreshSelectServicosOrgaosPublicos”

/>

</h:selectOneMenu>
&lt;/div&gt;
                	&lt;/div&gt;
                	&lt;div id="container_orgaos_publicos_b" class="ui-block-b"&gt;
                	&lt;/div&gt;
                &lt;/div&gt;
<!-- 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”);
Criado 5 de abril de 2013
Ultima resposta 5 de abr. de 2013
Respostas 2
Participantes 2