3.1.2.2.4. JSF example using the JBoss Portlet Bridge

To write a portlet using JSF, it is required to have a 'bridge'. This software allows developers to write a portlet application as if it was a JSF application. The bridge then negotiates the interactions between the two layers.

An example of the JBoss Portlet Bridge is available in examples/JSFHelloUser. The configuration is slightly different from a JSP application. This example can be used as a base to configure instead of creating a new application.

As in any JSF application, the file faces-config.xml is required. It must contain the following information:


<faces-config>
...
    <application>
      <view-handler>org.jboss.portletbridge.application.PortletViewHandler</view-handler>
      <state-manager>org.jboss.portletbridge.application.PortletStateManager</state-manager>
   </application>
...
</faces-config>

The portlet bridge libraries must be available and are usually bundled with the WEB-INF/lib directory of the web archive.

The other differences as compared to a regular portlet application can be found in the portlet descriptor. All details about it can be found in the JSR-301 specification that the JBoss Portlet Bridge implements.


<?xml version="1.0" encoding="UTF-8"?>
<portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd 
                                         http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"
   version="2.0">
   <portlet>
(1)      <portlet-name>JSFHelloUserPortlet</portlet-name>
      <portlet-class>javax.portlet.faces.GenericFacesPortlet</portlet-class>
      <supports>
         <mime-type>text/html</mime-type>
         <portlet-mode>view</portlet-mode>
         <portlet-mode>edit</portlet-mode>
         <portlet-mode>help</portlet-mode>
      </supports>
      <portlet-info>
         <title>JSF Hello User Portlet</title>
      </portlet-info>
      
(2)      <init-param>
         <name>javax.portlet.faces.defaultViewId.view</name>
         <value>/jsf/welcome.jsp</value>
      </init-param>
 
(3)      <init-param>
         <name>javax.portlet.faces.defaultViewId.edit</name>
         <value>/jsf/edit.jsp</value>
      </init-param>
 
(4)      <init-param>
         <name>javax.portlet.faces.defaultViewId.help</name>
         <value>/jsf/help.jsp</value>
      </init-param>
 
   </portlet>
</portlet-app>

1

All JSF portlets define javax.portlet.faces.GenericFacesPortlet as the portlet class. This class is part of the JBoss Portlet Bridge.

2

This is a mandatory parameter to define what's the default page to display.

3

This parameter defines which page to display on the 'edit' mode.

4

This parameter defines which page to display on the 'help' mode.

Copyright ©2012. All rights reserved. eXo Platform SAS