Estou com um problema que já está me perturbando há alguns dias.
Tenho um p:selectonemenu que atualiza outro p:selectonemenu atraves de uma chamada p:ajax.
Porém o segundo p:selectonemenu não renderiza.
Quando uso assim, funciona.
o trecho do bean que faz a mudança está assim:
public void trocaPeriodo(){
if(periodoTipo != null && !periodoTipo.equals(""))
periodosTiposItens = periodosData.get(periodoTipo);
else
periodosTiposItens = new HashMap<String, String>();
}
Alguém sabe como posso resolver?
Uso Primefaces 3.5
[quote=Roselito Fávero da Silva]Duas sugestões pra tentar descobrir o que está acontecendo:
1 - mandar atualizar algum container que esteja fora dos select, um painel, ou até @form.
2 - criar um container do JSF ou do Primefaces em volta do segundo select (panelgrid, ou outputpanel) e mandar atualizar o container.[/quote]
Neste caso ele deixa de renderizar tanto o selectOneMenu com id=“fldTipoPeriodo” quanto os alvos fldPeriodoInicial e fldPeriodoFinal se os selectOneMenu destes últimos forem do elementos de primefaces.
Encontrei outra solução para que o projeto não fique parado muito tempo neste ponto.
xhtml original (o que está apresentando erro) estava com a estrutura abaixo:[code]
<ui:define name="cadastro">
<h:outputStylesheet library="css" name="sig.css" />
<div id="corpo-pagina"> <!-- Inicio Corpo da pagina -->
<div id="divEsquerda" style="width:5%;">.</div>
<div id="divformulario" class="classFormulario" style="width:90%;">
<div id="divformN">
<div id="divformNW" style="float:left;width:50%">
<!-- Aqui entra um gráfico -->
</div><!-- Fim divformNW -->
<div id="divformNE" style="float:left;width:50%">
<!-- Aqui entra um gráfico -->
</div><!-- Fim divformNE -->
</div><!-- Fim divformN -->
<p:separator />
<div id="divformS" >
<div id="divformSW" style="float:left;width:50%">
<h:form id="frmFiltro" prependId="false" >
<p:panel id="panel" header="Filtros" style="margin-bottom:10px;">
<h:panelGrid columns="3" cellpadding="5">
<h:outputText value="Período por: " />
<p:selectOneMenu id="fldTipoPeriodo" value="#{sigKpiQtAtendimentos.periodoTipo}" process="@this"
>
<p:ajax update="fldPeriodoInicial fldPeriodoFinal"
event="change"
listener="#{sigKpiQtAtendimentos.trocaPeriodo()}" />
<f:selectItem itemLabel="Selecione..." itemValue="" />
<f:selectItems value="#{sigKpiQtAtendimentos.periodosTipos}" />
</p:selectOneMenu>
<br />
<h:outputText value="Intervalo : " />
<p:selectOneMenu id="fldPeriodoInicial" value="#{sigKpiQtAtendimentos.periodoInicial}" >
<f:selectItem itemLabel="Período Inicial..." itemValue="" />
<f:selectItems value="#{sigKpiQtAtendimentos.periodosTiposItens}"/>
</p:selectOneMenu>
<h:selectOneMenu id="fldPeriodoFinal" value="#{sigKpiQtAtendimentos.periodoFinal}" >
<f:selectItem itemLabel="Período Final..." itemValue="" />
<f:selectItems value="#{sigKpiQtAtendimentos.periodosTiposItens}"/>
</h:selectOneMenu>
<h:outputText value="Especialidade: " />
<!-- outros filtros entravam aqui mas foram removidos na tentativa deisolar o problema -->
<br />
</h:panelGrid>
</p:panel>
</h:form>
</div><!-- Fim divformSW -->
<div id="divformSE" style="float:left;width:50%">
<h:form id="frmListagem">
<!-- Aqui entra um dataTable -->
</h:form>
</div><!-- Fim divformSE -->
</div><!-- Fim divformS -->
</div><!-- Fim da divformulario -->
</div><!-- Fim da div corpo-pagina -->
</ui:define>
</ui:composition>
[/code]
Joguei o template pro alto (criei uma cópia renomeada para não perder este original) e remontei toda a pagina com h:head e h:body e está funcionando.
Está porco pois não estou compatimentalizando, mas está funcionando sem erro e posso continuar o projeto.
Porém este bug (não se se meu ou do primefaces) ainda está engasgado e continuo aceitando sugestões.