JSR 286 : Public Render Parameters feature

I had written this blog when the early draft of JSR 286 was released. Recently the proposed final draft was released, it has some changes in public render parameter feature. I have written a new blog to explain this feature with an example. 

In order to provide coordination between portlets the Java Portlet Specification, JSR 286 introduces the following mechanisms

  • Eventing: portlet events that a portlet can receive and send
  • Public Render Parameters: render state that can be shared between portlets

In my previous blog, i explained Eventing feature and in this blog will explain the Public Render Parameter feature.

In JSR 168, the render parameters set in processAction is only available in the render of the same portlet.

With the Public Render Parameters feature, the render parameters set in the processAction of one portlet will be available in render of other portlets also. Using public render parameters instead of events avoids the additional process event call.

In order to allow coordination of render parameters with other portlets, within the same portlet application or across portlet applications, the portlet can declare public render parameters in its deployment descriptor using the public-render-parameter element in the portlet application section. Public render parameters can be viewed and changed by other portlets or components.

In the portlet section each portlet can specify the public render parameters it would like to share via the supported-public-render-parameter element. The supported-public-render-parameter element must reference the identifier of a public render parameter defined in the portlet application section in a public-render-parameter element.

How it works..
Consider the following example..

Declare the render parameters to be shared in the portlet.xml
    1. Set the public render parameters at the portlet application level.
    <portlet-app .....>
        <public-render-parameter>
            <identifier>id1</identifier>
            <qname xmlns:x="http://sun.com/params">x:param1</qname>
        </public-render-parameter>
        <public-render-parameter>
            <identifier>id2</identifier>
            <qname xmlns:x="http://sun.com/params">x:param2</qname>
        </public-render-parameter>

    2. Specify the render parameter the portlet would like to share in the portlet section.
    <portlet>
        ...............
            <portlet-name>PortletA</portlet-name>
        ...............
             <supported-public-render-parameter>id1</supported-public-render-parameter>
             <supported-public-render-parameter>id2</supported-public-render-parameter>
        ...............
    <portlet>
    <portlet>
        ...............
            <portlet-name>PortletB</portlet-name>
        ...............
             <supported-public-render-parameter>id1</supported-public-render-parameter>
        ...............
    <portlet>
    <portlet>
        ...............
            <portlet-name>PortletC</portlet-name>
        ...............
             <supported-public-render-parameter>id2</supported-public-render-parameter>
        ...............
    <portlet>


   
1. If portletA sets the render parameter param1, portletB receives it but not portletC
2. If portletA sets the render parameter param2, portletC receives it but not portletB
3. If portletB sets the render parameter param1, portletA receives it but not portletC
4. If portletC sets the render parameter param2, portletA receives it but not portletB

You can checkout the sources from OpenPortal Portlet Container that has the implementation of the public render parameter feature. Write portlets that uses this feature and try it.

Comments:

Can Public Render Parameter support be used in JSF portlet?

Posted by Franky on October 06, 2008 at 08:03 AM IST #

<nohtml>this is my comment</nohtml>

Posted by this is my name on February 11, 2010 at 03:25 PM IST #

i am getting error:-
ERROR [PortletLocalServiceImpl:1551] Supported public render parameter references unnknown identifier folksonomy

In my portlet.xml I have:-
<supported-public-render-parameter>folksonomy</supported-public-render-parameter>

please suggest.

Posted by raj on May 10, 2010 at 01:47 PM IST #

In the portlet.xml what is the value of

<public-render-parameter>
...
</public-render-parameter>

Posted by Deepak on May 11, 2010 at 04:13 PM IST #

Post a Comment:
  • HTML Syntax: NOT allowed
About

Deepak Gothe

Search

Categories
Archives
« April 2014
SunMonTueWedThuFriSat
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
   
       
Today