<jmoordbjsf:autocomplete>

Para los autocomplete usamos <jmoordbjsf:autocomplete que generara los componentes <p:autocomplete de primefaces> estos estan optimizados para ser usados con jmoordb.

Los métodos estan definidos en el Services, solo tenemos que inyectarlo al Controller.

@Inject
RolServices rolServices;

En el Services definimos anteriormente, el pasara jmoordb los atributos necesarios como el campo de búsqueda , cantidad de caracteres a partir del cual iniciar y realizara la búsqueda en la colecciòn y devolvera un List<T> con el resultado.

 public List<Rol> complete(String query) {
        List<Rol> suggestions = new ArrayList<>();
             try {
          suggestions=repository.complete(query);
        } catch (Exception e) {
            JsfUtil.errorMessage("complete() " + e.getLocalizedMessage());
        }
  • field es el campo que deseamos buscar

  • itemLabel es la etiqueta que sera mostrada.

  • completeMethod esta definido en el Services

 <p:outputLabel value="#{msg['field.idrol']}"/>
 <jmoordbjsf:autocomplete converter="#{rolConverter}"
              completeMethod="#{rolController.rolServices.complete}"
              labeltip1="#{msg['field.idrol']} #{p.idrol}"
              labeltip2="#{msg['field.rol']} #{p.rol}"
              listener="#{rolController.handleAutocompleteOfListXhtml}"
              value="#{rolController.rolSearch}"
              itemLabel="#{p.idrol}"
              field="idrol"
              update=":form:dataTable"/>

<p:outputLabel value="#{msg['field.rol']}"/>
<jmoordbjsf:autocomplete converter="#{rolConverter}"
             completeMethod="#{rolController.rolServices.complete}"
             labeltip1="#{msg['field.idrol']} #{p.idrol}"
             labeltip2="#{msg['field.rol']} #{p.rol}" 
             listener="#{rolController.handleAutocompleteOfListXhtml}"
             value="#{rolController.rolSearch}"
             itemLabel=" #{p.rol}"
             field="rol"
 update=":form:dataTable"/>

Last updated

Was this helpful?