JSF Ext enthält eine Reihe von EL-Funktionen, die das Implementieren von XHTML-Seiten erleichtern.

Select Items#

Das Thema Select Items ist rund um <h:selectOneMenu> (Drop-Down), <p:selectOneButtons> und andere Select-Elemente aus dem H-Namespace, Primefaces und Richfaces interessant.

Grundlage ist das Nutzen von messages.properties, die in der faces-config.xml festgelegt werden:

<?xml version="1.0" encoding="UTF-8"?>
<faces-config version="2.2"
    xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"
>
	<application>
		<resource-bundle>
			<base-name>messages</base-name>
			<var>messages</var>
		</resource-bundle>
		<message-bundle>messages</message-bundle>
                ...
        </application>
</faces-config>

Folgende Enum-Klasse liegt vor:

public enum TestEnum {
	ONE,
	TWO,
	THREE,
	FOUR,
	FIVE
}

In den Messages, also messages.properties, messages_en.properties für Englisch, messages_de.properties für Deutsch etc. werden dann die Texte für die Enums hinterlegt:

com.intersult.test.model.TestEnum.ONE=One
com.intersult.test.model.TestEnum.ONE.description=Description One
com.intersult.test.model.TestEnum.TWO=Two
com.intersult.test.model.TestEnum.TWO.description=Description Two

Hinweis: Die Einträge mit der zusätzlichen Endung ".description" sind optional und werden in die Description-Properties der SelectItem-Klasse von JSF hinzugefügt.

Enum String#

Liegt ein Property einer Modellklasse vor, dessen Wert als Klartext ausgegeben soll, kann die EL-Function enumString verwendet werden:
<h:outputText id="result" value="#{e:enumString(test.testEnum)}"/>

Enum Select Items#

Für ein Enum können bequem Select Items erzeugt werden:
<f:selectItems value="#{e:enumSelectItems('com.intersult.test.model.TestEnum')}"/>