You are viewing a plain text version of this content. The canonical link for it is here.
Posted to pluto-user@portals.apache.org by David Botterill <Da...@Sun.COM> on 2005/10/05 06:26:22 UTC
Portlet Preference Persistence
I've read through the old mail archives and found a thread that said
preferences were persisted in portletentityregistry.xml. Is this really
true? When I store the preferences then check this file, I don't see
the preferences. I'd like to be able to verify that the preferences are
actually being persisted when I "store" them. Can anyone tell me how
to do that? Also, does Pluto read the persisted preferences when the
portlet is loaded?
Thanks!
-David
Re: Portlet Preference Persistence
Posted by David Botterill <Da...@Sun.COM>.
I found the answer. Yes, portletentityregistry.xml will have the stored
preferences. There is one caveat. In order for the store to work, you
must get the preferences during an action request. The spec says you
have to store during an action request but not that you must GET the
preferences during an action request. In Pluto, the preferences are
instantiated when you get them from the PortletRequest. When the
preferences are instantiated, the request type is passed in. Here's
the code from RenderRequestImpl.getPreferences().
if (portletPreferences == null) {
portletPreferences = PortletObjectAccess.getPortletPreferences(
org.apache.pluto.Constants.METHOD_RENDER,
super.getInternalPortletWindow().getPortletEntity()
);
}
PortletObjectAccess uses a factory to instantiate the preferences. The
bottom line is this, when you get the preferences, the request type
(render or action) is always associated with that instance of the
preferences. The implication is that you can not get the preferences in
a session context, keep them around, change them and then store them
during an action request. The workaround, of course, is to get the
preferences from the action request just before you store.
This implementation seems cumbersome for frameworks such as JSF or
Struts. If you look at JSR-168 on this topic, however, you can see why
the implementor(s) chose this design. Here's the paragraph:
PLT 14.1 "Portlets have access to their preferences attributes through
the PortletPreferences interface. Portlets have access to the associated
PortletPreferences object while they are processing requests. Portlets
may only modify preferences attributes during a processAction invocation."
For more information, please see my blog at http://blogs.sun.com/david.
Thanks!
-David
David Botterill wrote:
> I've read through the old mail archives and found a thread that said
> preferences were persisted in portletentityregistry.xml. Is this
> really true? When I store the preferences then check this file, I
> don't see the preferences. I'd like to be able to verify that the
> preferences are actually being persisted when I "store" them. Can
> anyone tell me how to do that? Also, does Pluto read the persisted
> preferences when the portlet is loaded?
>
> Thanks!
> -David