Enumerados en Expresiones EL

En aplicaciones FundeWeb 2.0 y posteriores, podemos utilizar enumerados en expresiones EL mediante el componente <p:importEnum> de PrimeFaces.

Pero solo lo podemos utilizar en la página cargada. No lo podemos utilizar en el fichero pages.xml, en los ficheros .page.xml o en las expresiones EL utilizadas en el código Java; si antes no se ha cargado y resuelto el valor del enumerado.

Para poder utilizar enumerados de una manera general en las aplicaciones FundeWeb (1.5, 2.0 y posteriores), podemos definirlos en el fichero components.xml mediante la etiqueta <core:enum-loader>.

Dentro de esta etiqueta, utilizaremos la etiqueta <value> para registrar cada enumerado.

	<core:enum-loader>
		<value>es.um.atica.jpa.das.DataAccessServiceImpl$QueryType</value>
		<value>es.um.atica.pruema.MiEnumerado</value>
	</core:enum-loader>

En el ejemplo hemos definido dos enumerados:

  • es.um.atica.jpa.das.DataAccessServiceImpl$QueryType, donde el enumerado QueryType esta definido en la clase DataAccessServiceImpl. Utilizamos el separador '$'.
  • es.um.atica.pruema.MiEnumerado, donde el enumerado MiEnumerado esta definido en su propio fichero.

Ejemplos de utilización:

<h:outputText value="1.- Enum Class: #{es.um.atica.jpa.das.DataAccessServiceImpl$QueryType}" />
 
<h:outputText value="2.- All Enum Values: " />
<ui:repeat var="_current" value="#{es.um.atica.jpa.das.DataAccessServiceImpl$QueryType.getEnumConstants()}">  
    <h:outputText value="#{_current}" /> &#160;  
</ui:repeat>
 
<h:outputText value="3.- NAMED_QUERY enum Value: #{es.um.atica.jpa.das.DataAccessServiceImpl$QueryType.NAMED_QUERY}" />
 
<h:outputText value="4.- Compare equality of NAMED_QUERY and NAMED_QUERY: #{es.um.atica.jpa.das.DataAccessServiceImpl$QueryType.NAMED_QUERY eq es.um.atica.jpa.das.DataAccessServiceImpl$QueryType.NAMED_QUERY}" />
 
<h:outputText value="5.- Compare equality of NAMED_QUERY and JPA_QUERY: #{es.um.atica.jpa.das.DataAccessServiceImpl$QueryType.NAMED_QUERY eq es.um.atica.jpa.das.DataAccessServiceImpl$QueryType.JPA_QUERY}" />
 
<h:outputText value="6.- Usaer has role NAMED_QUERY: #{s:hasRole(es.um.atica.jpa.das.DataAccessServiceImpl$QueryType.NAMED_QUERY)}" />

y el resultado es:

1.- Enum Class: class es.um.atica.jpa.das.DataAccessServiceImpl$QueryType
2.- All Enum Values: NAMED_QUERY NATIVE_QUERY JPA_QUERY
3.- NAMED_QUERY enum Value: NAMED_QUERY
4.- Compare equality of NAMED_QUERY and NAMED_QUERY: true
5.- Compare equality of NAMED_QUERY and JPA_QUERY: false
6.- Usaer has role NAMED_QUERY: false


JUAN MIGUEL BERNAL GONZALEZ 05/11/2019 13:57

  • fdw2.0/fundeweb2.0/gt/modificaciones_jboss_seam/enumerados_el.txt
  • Última modificación: 05/11/2019 14:51
  • por JUAN MIGUEL BERNAL GONZALEZ