10/15/2010

Inter - Portlet Communication mit Liferay, Teil II

Public render parameter (JSR 268)

Mit Hilfe von public render parametern können Portlet-übergreifend String oder String[] - Parameter verwendet werden. Um dies zu nutzen,müssen die public render parameter einzeln in der portlet.xml festgehalten werden.
Zuerst als Definition in einem der deployten Portlets: 
<public-render-parameter>
     <identifier>pr</identifier>
     <qname xmlns:x="http://sun.com/params">x:pr</qname>
  </public-render-parameter>
Alle Portlets die diesen Parameter nutzen möchten, müssen den folgenden EIntrag zur portlet.xml hinzufügen:
<supported-public-render-parameter>pr</supported-public-
Der Zugriff erfolgt dann (in einem non - JSF - Portlet):
public class SomePortlet extends GenericPortlet {
           
 public void processAction(ActionRequest req, ActionResponse res)
         throws IOException, PortletException {
                 res.setRenderParameter("pr", "wert");
           }
      }
Der Zugriff in einem JSF - Portlet erfolgt folgendermaßen:
FacesContext context = FacesContext.getCurrentInstance();
PortletRequest request = (PortletRequest)context.getExternalContext().getRequest();
return request.getParameter("pr");
Soll der PR - Parameter in einem JSF Portlet nicht nur abgefragt, sondern auch gesetzt werden, so ist der Folgende Wert in der portlet.xml zu setzen:
<init-param>
 <name>com.sun.faces.portlet.SAVE_REQUEST_SCOPE</name>
 <value>true</value>
</init-param>