How to create a JSF Portlet using MyFaces:
Option 1: MyFacesGenericPortlet
- 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
- 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