oi galera,
estou criando um componente de pesquisa (composite jsf) pra facilitar minha vida no desenvolvimento do meu projeto.
Esse componente busca endereço e é usado em todas as telas que eu preciso informar uma rua, bairro, cidade etc.
Se eu tenho uma tela normal chamando o componente ele funciona perfeito.
Mas se eu chamo o componente de um um p:dialog (estou usando primefaces 3.4.2), o componente vem travado e não permite alterar o filtro da consulta.
Só depois de clicar em consultar, que a tela do componente é destravada. No codigo abaixo, é o PNLFILTRO que fica travado (os combos não abre, os inputs estão como leitura) . Só funciona o botão filtrar.
Segue o codigo do meu componente:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:cc="http://java.sun.com/jsf/composite"
xmlns:p="http://primefaces.org/ui"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:componentepronto="http://java.sun.com/jsf/composite/componentepronto"
xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head>
<title>This content will not be displayed</title>
</h:head>
<!-- INTERFACE -->
<h:body >
<cc:interface>
<cc:actionSource name="autoCompleteID" targets="autoCompleteID" />
<cc:attribute name="size" required="false" default="15" type="java.lang.Integer"/>
<cc:attribute name="maxlength" required="false" default="9" type="java.lang.Integer"/>
<cc:attribute name="valor" required="false" default="null" type="java.lang.Object" />
<cc:attribute name="selected" required="false" default="null" type="java.lang.Object" />
<cc:attribute name="lista" required="false" type="java.util.List" />
<cc:attribute name="renderizar" required="false" default="true" type="java.lang.Boolean" />
<cc:attribute name="disabled" required="false" default="false" type="java.lang.Boolean" />
<cc:attribute name="cadastro" required="false" default="false" type="java.lang.Boolean" />
<cc:attribute name="styleClass" required="false" default="null" type="java.lang.String" />
<cc:attribute name="style" required="false" default="null" type="java.lang.String" />
<cc:attribute name="update" required="false" default="@this" type="java.lang.String" />
<cc:attribute name="widgetVar" required="false" default="consutaCep" type="java.lang.String" />
<cc:editableValueHolder name="value" targets="autoCompleteID" />
</cc:interface>
<!-- IMPLEMENTATION -->
<cc:implementation >
<p:dialog id="dlgEndereco" modal="false" position="top" widgetVar="#{cc.attrs.widgetVar}" width="800" header="Consulta Endereço">
<h:outputLabel>
<p:messages id="msg" />
</h:outputLabel>
<p:outputPanel id="dadosFiltro">
<p:panel id="pnlFiltro" header="Filtro" rendered="true">
<p:panelGrid>
<p:row>
<p:column>
<h:outputText value="UF:"/>
</p:column>
<p:column>
<h:selectOneMenu value="#{enderecoController.estado}" label="uf" style="width: 100px">
<f:selectItems value="#{enderecoController.estados}"/>
<p:ajax event="change" update="campoCidade" />
</h:selectOneMenu>
</p:column>
<p:column>
<h:outputText value="Cidade:"/>
</p:column>
<p:column>
<h:selectOneMenu id="campoCidade" value="#{enderecoController.cidade}" style="width: 250px;" label="cidade" requiredMessage="Necessário preencher o nome da cidade" converter="CidadeConverter">
<f:selectItems value="#{enderecoController.cidades}" var="cidadeAtual" itemValue="#{cidadeAtual}" itemLabel="#{cidadeAtual.nome}"/>
<p:ajax event="change" process="@this" update="campoBairroFiltro"/>
</h:selectOneMenu>
</p:column>
</p:row>
<p:row>
<p:column>
<h:outputText value="CEP:"/>
</p:column>
<p:column>
<componentepronto:cep valor="#{enderecoController.pesquisa.cep}" ajax="false"/>
</p:column>
<p:column>
<h:outputText value="Bairro:"/>
</p:column>
<p:column>
<h:selectOneMenu id="campoBairroFiltro" value="#{enderecoController.bairro}" style="width: 250px;" label="bairro" requiredMessage="Selecione um bairro" converter="BairroConverter" converterMessage="Erro ao converter bairro">
<f:selectItems value="#{enderecoController.bairros}" var="bairroAtual" itemValue="#{bairroAtual}" itemLabel="#{bairroAtual.nome}"/>
</h:selectOneMenu>
</p:column>
</p:row>
</p:panelGrid>
</p:panel>
</p:outputPanel>
<br/>
<p:dataTable id="lista" var="var" value="#{enderecoController.lazyLista}"
scrollable="false"
rows="5"
paginatorPosition="top"
paginator="true" lazy="true"
selectionMode="single"
selection="#{cc.attrs.selected}"
rowKey="#{var}"
emptyMessage="NENHUM RESULTADO ENCONTRADO!"
>
<p:column sortBy="#{var.codigo}" style="text-align: left">
<f:facet name="header">
<center><h:outputText value="ID"/></center>
</f:facet>
<h:outputText value="#{var.codigo}" />
</p:column>
<p:column sortBy="#{var.logradouroEndereco}" style="text-align: left">
<f:facet name="header">
<center><h:outputText value="Logradouro"/></center>
</f:facet>
<h:outputText value="#{var.endereco}" />
</p:column>
<p:column sortBy="#{var.bairro.bairroNome}" style="text-align: left">
<f:facet name="header">
<center><h:outputText value="Bairro"/></center>
</f:facet>
<h:outputText value="#{var.bairro.nome}" />
</p:column>
<p:column sortBy="#{var.bairro.cidade.nome}" style="text-align: left">
<f:facet name="header">
<center><h:outputText value="Cidade"/></center>
</f:facet>
<h:outputText value="#{var.bairro.cidade.nome}" />
</p:column>
<p:column >
<f:facet name="header" >
<h:outputText value="UF" />
</f:facet>
<h:outputText value="#{var.bairro.cidade.estado.sigla}" />
</p:column>
<p:column headerText="CEP" >
<h:outputText value="#{var.cep}" />
</p:column>
<f:facet name="footer">
<p:commandButton id="btn" value="OK" icon="ui-icon-check" onstart="#{cc.attrs.widgetVar}.hide()" update="#{cc.attrs.update}" global="false" process="lista"/>
</f:facet>
</p:dataTable>
</p:dialog>
</cc:implementation>
</h:body>
</html>
E como eu chamo o componente dentro do dialog:
O que me chama atenção é que depois que vc filtra, o resultado vem e o PNLFILTRO é destravado.
Dai funciona normal.
Alguem sabe porque isso ocorre?