Autocomplete Relacionados con dropdown (Provincia- distrito)

Deseamos seleccionar de un autocomplete que tiene dropdown="true", la provincia y mostrar en otro autocomplete los distritos que pertenecen a esa provincia, en un dropdown.

Un vista como esta

Se crean los autocomplete en new.xhmtl,view.xhtml

Se debe colocar

dropdown="true"
minQueryLength="0"

y los parametros

<f:attribute name="field" value="provincia"/>
<f:attribute name="fielddropdown" value="true"/>
<f:attribute name="fromstart" value="true"/>
<f:attribute name="fieldminquerylength" value="0"/>
   <p:outputLabel value="#{msg['field.provincia']}"/>


                        <p:autoComplete        
                            scrollHeight="250"   
                            size="35" 
                            emptyMessage="#{app['info.nohayregistros']}" 
                            value="#{clienteController.cliente.provincia}"  
                            completeMethod="#{provinciaController.provinciaServices.complete}"    
                            var="p"
                            dropdown="true"
                            minQueryLength="0"
                            required="true"
                            itemLabel="#{p.provincia}"
                            itemValue="#{p}" 
                            forceSelection="true"> 
                            <f:converter binding="#{provinciaConverter}"/>




                            <f:attribute name="field" value="provincia"/>
                            <f:attribute name="fielddropdown" value="true"/>
                            <f:attribute name="fromstart" value="true"/>
                            <f:attribute name="fieldminquerylength" value="0"/>

                            <p:ajax event="itemSelect" listener="#{provinciaController.handleSelect}"
                                    update="form:distrito :form:corregimiento"  />  
                            <f:facet name="itemtip">
                                <h:panelGrid columns="1" cellpadding="5">

                                    <h:outputText value="#{msg['field.provincia']} #{p.provincia}" />


                                </h:panelGrid>
                            </f:facet>
                        </p:autoComplete>  

                        <p:outputLabel value="#{msg['field.distrito']}"/>


                        <p:autoComplete      
                            id="distrito"
                            scrollHeight="250"   
                            size="35" 
                            emptyMessage="#{app['info.nohayregistros']}" 
                            value="#{clienteController.cliente.distrito}"  
                            completeMethod="#{clienteController.completeDistrito}"    
                            var="p"
                            dropdown="true"
                            minQueryLength="0"
                            required="#{true}"
                            itemLabel="#{p.distrito}"
                            itemValue="#{p}" 
                            forceSelection="true"> 
                            <f:converter binding="#{distritoConverter}"/>
                            <f:attribute name="field" value="distrito"/>
                            <f:attribute name="fielddropdown" value="true"/>
                            <f:attribute name="fieldminquerylength" value="0"/>
                            <f:attribute name="fromstart" value="true"/>



                            <p:ajax event="itemSelect" listener="#{distritoController.handleSelect}"
                                    update="form:corregimiento"
                                    />  
                            <f:facet name="itemtip">
                                <h:panelGrid columns="1" cellpadding="5">
                                    <h:outputText value="#{msg['field.distrito']} #{p.distrito}" />


                                </h:panelGrid>
                            </f:facet>
                        </p:autoComplete>  



                        <p:outputLabel value="#{msg['field.corregimiento']}"/>

                        <p:autoComplete   
                            id="corregimiento"
                            scrollHeight="250"   
                            size="35" 
                            emptyMessage="#{app['info.nohayregistros']}" 
                            value="#{clienteController.cliente.corregimiento}"  
                            completeMethod="#{clienteController.completeCorregimiento}"    
                            var="p"
                            dropdown="true"
                            minQueryLength="0"
                            required="#{true}"
                            itemLabel="#{p.corregimiento}"
                            itemValue="#{p}" 
                            forceSelection="true"> 
                            <f:converter binding="#{corregimientoConverter}"/>
                            <f:attribute name="field" value="corregimiento"/>
                            <f:attribute name="fielddropdown" value="false"/>
                            <f:attribute name="fieldminquerylength" value="0"/>
                            <f:attribute name="fromstart" value="true"/>

                            <f:facet name="itemtip">
                                <h:panelGrid columns="1" cellpadding="5">

                                    <h:outputText value="#{msg['field.corregimiento']} #{p.corregimiento}" />


                                </h:panelGrid>
                            </f:facet>
                        </p:autoComplete>

Controller

ProvinciaServices.Java

El de provincia que es el principal se puede obtener del Services.

ClienteController.java

Implementamos el autocomplete filtrando ademàs del query por provincia.idprovincia.

Last updated

Was this helpful?