Lists and Maps as Managed Beans in JSF

This tips explain how to use List and Map classes directly as Managed Beans. Here notice that you cannot use List and Map interfaces directly as Managed Beans, you can use only the implementations classes like ArrayList, Map, etc. There is no way to call constructor in the interfaces if you use List or Map directly.

also read:

The following example program initialize the values in the faces-config.xml and stored as managed beans. You can use that beans directly in the JSP pages. Note that the sample program uses ‘none’ as the scope for the bean. This is because the resulted managed bean is created as per the request and will not be stored anywhere in the scopes.

JSP File (index.jsp)

 
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<html>
    <body>
        <f:view>
            <h:form>
                <h:dataTable var="loc" value="#{listBean}">
                    <h:column>
                        <h:outputText value="#{loc}" />
                    </h:column>
                </h:dataTable>
                <h:outputText value="#{mapBean['Apple']}"/>
                <h:outputText value="#{mapBean['Google']}"/>
                <h:outputText value="#{mapBean['Reliance']}"/>
            </h:form>
        </f:view>
    </body>
</html>

faces-config.xml

 
<?xml version='1.0' encoding='UTF-8'?>
<faces-config version="1.2"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd">
    <managed-bean>
        <managed-bean-name>listBean</managed-bean-name>
        <managed-bean-class>java.util.ArrayList</managed-bean-class>
        <managed-bean-scope>none</managed-bean-scope>
        <list-entries>
            <value>Steve Jobs</value>
            <value>Sergy Brin</value>
            <value>Larry Page</value>
            <value>Anil Ambani</value>
        </list-entries>
    </managed-bean>
    <managed-bean>
        <managed-bean-name>mapBean</managed-bean-name>
        <managed-bean-class>java.util.HashMap</managed-bean-class>
        <managed-bean-scope>none</managed-bean-scope>
        <map-entries>
            <map-entry>
                <key>Apple</key>
                <value>Steve Jobs</value>
            </map-entry>
            <map-entry>
                <key>Google</key>
                <value>Larry Page and Sergy Brin</value>
            </map-entry>
            <map-entry>
                <key>Reliance</key>
                <value>Anil Ambani</value>
            </map-entry>
        </map-entries>
    </managed-bean>
</faces-config>

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>