Conversores Automáticos para Componentes JSF

Se han añadido una serie de conversores JSF para trabajar de manera más rapida y sencilla con componentes JSF que aceptan SelectItems (<s:selecItems> o <f:selectItems>). Los conversores son los siguientes:

  • fw.converters.ListConverter
  • fw.converters.ListCustomMethodConverter
  • fw.converters.ListIndexConverter
  • fw.converters.SelectItemsConverter
  • fw.converters.SelectItemsIndexConverter
  • fw.converters.ToCollectionConverter
  • fw.converters.ToLowerCaseConverter
  • fw.converters.ToUpperCaseConverter
  • fw.converters.TrimConverter

ListConverter está diseñado para su uso en componentes de selección especializados que no usen SelectItems como fuente de sus elementos seleccionables, pero trabajen directamente a través de una Lista de entidades, y el conversor SelectItemsConverter no se puede utilizar.

Este conversor permite llenar un componente de selección con objetos Java complejos, permitiendo a JSF realizar la conversion String/Object automáticamente sin la necesidad de proporcionar un conversor personalizado. Este convertidor convierte automáticamente utilizando el método toString() del item seleccionado.

Ejemplo

Este conversor está disponible mediante el identificador fw.converters.ListConverter. Se utiliza en combinación con la etiqueta <fdw:converter> para poder pasarle la Lista origen con los objetos a convertir.

Ejemplo de uso básico con el componente <p:pickList> de PrimeFaces, que es uno de los pocos componentes de selección que no usa SelectItems como fuente, sino que funciona directamente a través de una Lista.

<p:pickList value="#{bean.dualListModel}" var="entity" itemValue="#{entity}" itemLabel="#{entity.someProperty}">
    <fw:converter converterId="fw.converters.ListConverter" list="#{bean.dualListModel.source}" />
</p:pickList>

Ejemplo de uso básico con el componente <p:autoComplete> de PrimeFaces, que es uno de los pocos componentes de selección que no usa SelectItems como fuente, sino que funciona directamente a través de una Lista.

<p:autoComplete id="themePojo" value="#{autoCompleteView.theme1}" completeMethod="#{autoCompleteView.completeTheme}"
	                    var="_theme" itemLabel="#{_theme.displayName}" itemValue="#{_theme}">
    <fdw:converter converterId="fw.converters.ListConverter" list="#{autoCompleteView.allThemes}" />
</p:autoComplete>

Debemos tener una buena implementación del método toString() en el objeto Java.</code>

ListCustomMethodConverter está diseñado para su uso en componentes de selección especializados que no usen SelectItems como fuente de sus elementos seleccionables, pero trabajen directamente a través de una Lista de entidades, y el conversor SelectItemsConverter no se puede utilizar.

Este conversor permite llenar un componente de selección con objetos Java complejos, permitiendo a JSF realizar la conversion String/Object automáticamente sin la necesidad de proporcionar un conversor personalizado. Este convertidor convierte automáticamente utilizando el método que especifiquemos del item seleccionado.

La diferencia con ListConverter es que podemos especificar el método de referencia para la conversión.

Ejemplo

Este conversor está disponible mediante el identificador fw.converters.ListCustomMethodConverter. Se utiliza en combinación con la etiqueta <fdw:converter> para poder pasarle la Lista origen con los objetos a convertir.

Ejemplo de uso básico con el componente <p:pickList> de PrimeFaces, que es uno de los pocos componentes de selección que no usa SelectItems como fuente, sino que funciona directamente a través de una Lista. En este caso utilizamos el método hashCode, que debe de estar definido.

<p:pickList value="#{bean.dualListModel}" var="entity" itemValue="#{entity}" itemLabel="#{entity.someProperty}">
    <fw:converter converterId="fw.converters.ListCustomMethodConverter" list="#{bean.dualListModel.source}" methodName="hashCode" />
</p:pickList>

Ejemplo de uso básico con el componente <p:autoComplete> de PrimeFaces, que es uno de los pocos componentes de selección que no usa SelectItems como fuente, sino que funciona directamente a través de una Lista. En este caso utilizamos el método hashCode, que debe de estar definido.

<p:autoComplete id="themePojo" value="#{autoCompleteView.theme1}" completeMethod="#{autoCompleteView.completeTheme}"
	                    var="_theme" itemLabel="#{_theme.displayName}" itemValue="#{_theme}">
    <fdw:converter converterId="fw.converters.ListCustomMethodConverter" list="#{autoCompleteView.allThemes}" methodName="hashCode" />
</p:autoComplete>

Debemos tener una buena implementación del método toString() en el objeto Java.</code>

ListIndexConverter está diseñado para su uso en componentes de selección especializados que no usen SelectItems como fuente de sus elementos seleccionables, pero que trabajen directamente a través de una Lista de entidades, y el conversor SelectItemsConverter no se puede utilizar.

Este conversor permite llenar un componente de selección con objetos Java complejos, permitiendo a JSF realizar la conversion String/Object automáticamente sin la necesidad de proporcionar un conversor personalizado. Este convertidor convierte automáticamente utilizando la posición (indice) en la lista del item seleccionado.

Ejemplo

Este conversor está disponible mediante el identificador fw.converters.ListConverter. Se utiliza en combinación con la etiqueta <fdw:converter> para poder pasarle la Lista origen con los objetos a convertir.

Ejemplo de uso básico con el componente <p:pickList> de PrimeFaces, que es uno de los pocos componentes de selección que no usa SelectItems como fuente, sino que funciona directamente a través de una Lista.

<p:pickList value="#{bean.dualListModel}" var="entity" itemValue="#{entity}" itemLabel="#{entity.someProperty}">
    <fw:converter converterId="fw.converters.ListIndexConverter" list="#{bean.dualListModel.source}" />
</p:pickList>

Ejemplo de uso básico con el componente <p:autoComplete> de PrimeFaces, que es uno de los pocos componentes de selección que no usa SelectItems como fuente, sino que funciona directamente a través de una Lista.

<p:autoComplete id="themePojo" value="#{autoCompleteView.theme1}" completeMethod="#{autoCompleteView.completeTheme}"
	                    var="_theme" itemLabel="#{_theme.displayName}" itemValue="#{_theme}">
    <fdw:converter converterId="fw.converters.ListIndexConverter" list="#{autoCompleteView.allThemes}" />
</p:autoComplete>

SelectItemsConverter permite llenar un componente de selección con objetos (entidades) de modelo Java complejos con etiquetas <f:selectItems> o <s:selectItems>, y hacer que JSF los convierta automáticamente sin la necesidad de proporcionar un conversor personalizado. Este conversor convierte automáticamente utilizando el método toString() del elemento seleccionado.

Ejemplo

Este conversor está disponible mediante el identificador fw.converters.SelectItemsConverter, que hay que poner el el atributo converter del componente JSF que engloba a <f:selectItems> o <s:selectItems>.

Ejemplo de uso básico con el componente <h:selectOneMen> de JSF, que es uno de los componentes de selección que usa SelectItems como fuente.

<h:selectOneMenu value="#{bean.selectedItem}" converter="fw.converters.SelectItemsConverter">
    <f:selectItems value="#{bean.availableItems}" />
</h:selectOneMenu>

Debemos tener una buena implementación del método toString() en el objeto Java.</code>

SelectItemsIndexConverter permite llenar un componente de selección con objetos (entidades) de modelo Java complejos con etiquetas <f:selectItems> o <s:selectItems>, y hacer que JSF los convierta automáticamente sin la necesidad de proporcionar un conversor personalizado. Este conversor convierte automáticamente utilizando la posición en la lista (indice) del elemento seleccionado.

Ejemplo

Este conversor está disponible mediante el identificador fw.converters.SelectItemsConverter, que hay que poner el el atributo converter del componente JSF que engloba a <f:selectItems> o <s:selectItems>.

Ejemplo de uso básico con el componente <h:selectOneMen> de JSF, que es uno de los componentes de selección que usa SelectItems como fuente.

<h:selectOneMenu value="#{bean.selectedItem}" converter="fw.converters.SelectItemsConverter">
    <f:selectItems value="#{bean.availableItems}" />
</h:selectOneMenu>

ToCollectionConverter permite convertir los valores enviados (String) a una colección Java (por defecto java.util.ArrayList) basada en un delimitador (por defecto ','). Además, elimina los espacios en blanco que hay antes y despues (trim) de cada valor delimitado. Es útil para entrada de valores separadas por comas.

Ejemplo

Este conversor está disponible mediante el identificador fw.converters.ToCollectionConverter , que hay que poner el el atributo converter del componente que referencia a la colección.

Ejemplo de uso básico con el componente <h:inputText> de JSF.

<h:inputText value="#{bean.commaSeparatedValues}" converter="fw.converters.ToCollectionConverter" />

Donde #{bean.commaSeparatedValues} debe ser una collección java.util.ArrayList de String.

Ejemplo, más complejo donde utilizamos la etiqueta <fdw:converter> para especificar:

  • El tipo de la colección (java.util.TreeSet) en la propiedad collectionType.
  • El delimitador de la lista (';') en la propiedad delimiter.
  • El conversor para los objetos de la lista (javax.faces.Integer) en la propiedad itemConverter.
<h:inputText value="#{bean.uniqueOrderedSemiColonSeparatedNumbers}">
    <fdw:converter converterId="fw.converters.ToCollectionConverter"
                 delimiter=";"
                 collectionType="java.util.TreeSet"
                 itemConverter="javax.faces.Integer" >
</h:inputText>

Donde #{bean.uniqueOrderedSemiColonSeparatedNumbers} debe ser una collección java.util.TreeSet de Integer.

ToLowerCaseConverter permite convertir el valor enviado (String) a minúsculas, eliminando los espacios en blanco que hay antes y despues (trim) del valor.

Ejemplo

Este conversor está disponible mediante el identificador fw.converters.ToLowerCaseConverter, que hay que poner el el atributo converter del componente.

Ejemplo de uso básico con el componente <h:inputText> de JSF.

<h:inputText value="#{bean.email}" converter="fw.converters.ToLowerCaseConverter" />

Donde #{bean.email} debe ser un String.

ToUpperCaseConverter permite convertir el valor enviado (String) a mayúsculas, eliminando los espacios en blanco que hay antes y despues (trim) del valor.

Ejemplo

Este conversor está disponible mediante el identificador fw.converters.ToUpperCaseConverter, que hay que poner el el atributo converter del componente.

Ejemplo de uso básico con el componente <h:inputText> de JSF.

<h:inputText value="#{bean.zipCode}" converter="fw.converters.ToUpperCaseConverter" />

Donde #{bean.zipCode} debe ser un String.

TrimConverter elimina los espacios en blanco que hay antes y despues (trim) del valor.

Ejemplo

Este conversor está disponible mediante el identificador fw.converters.TrimConverter, que hay que poner el el atributo converter del componente.

Ejemplo de uso básico con el componente <h:inputText> de JSF.

<h:inputText value="#{bean.username}" converter="fw.converters.TrimConverter" />

Donde #{bean.username} debe ser un String.


JUAN MIGUEL BERNAL GONZALEZ 05/11/2019 11:55

  • fdw2.0/fundeweb2.0/gt/componente_conversores_selecitems.txt
  • Última modificación: 05/11/2019 13:55
  • por JUAN MIGUEL BERNAL GONZALEZ