How to create a JSF Portlet using MyFaces:

Option 1: MyFacesGenericPortlet

  1. Make sure your JSF MyFaces application runs as a stand-alone servlet.

  2. Remove any redirects from your faces-config.xml. Portlets can not handle these.
  3. Create a Portlet WAR as per the instructions for your Portlet container. Make sure it contains everything that was included in step 1.
  4. Update your portlet.xml file as follows:

<!-- You must use this Portlet impl class -->
<portlet-class>org.apache.myfaces.portlet.MyFacesGenericPortlet</portlet-class>


<!-- The "home page" of your JSF application -->
<!-- This is a required param.               -->
<init-param>
   <name>default-view</name>
   <value>/some_view_id_from_faces-config</value>
</init-param>


<!-- A class name that implements org.apache.myfaces.portlet.DefaultViewSelector -->
<!-- This optional param is used if your want to choose different default views  -->
<!-- based on some condition.  You still must specify default-view above, but    -->
<!-- this impl will take precedence.                                             -->
<init-param>
   <name>default-view-selector</name>
   <value>com.foo.MyViewSelector</value>
</init-param>

Option 2: Apache Portal Bridge

  1. same steps as above, but replace org.apache.myfaces.portlet.MyFacesGenericPortlet with org.apache.portals.bridges.jsf.FacesPortlet,

  2. put portal bridge jar files inside /WEB-INF/lib.

Caution: Option 1 can work inside/outside portlet, and Option 2 can't work standalone, unless remove the bridge jar. I think it is a bug.

reference: http://portals.apache.org/bridges/multiproject/jsf-demo/index.html

CreatingJSFPortlets (last edited 2009-09-20 23:01:41 by localhost)