Ralph Goers wrote:
Stefan Hepper wrote:
Ralph Goers wrote:

We also have a requirement to have our theme process some portlets differently than others. Ideally, a portlet (and pages for that matter) should be able to have attributes associated with them in the portlet.xml that the theme can interrogate.

The portlet can do this today: it can set things as init params in the portlet.xml or as response properties at runtime.
I don't recall reading how those are made available to the theme.
Given that themes are not part of JSR 286 this will be vendor specific.

We also have to share attributes between portlets and several servlets. Our current vendor supports this including in servlet filters in front of the portal. I haven't read the spec in a draft or two, but I assume sharing is still limited to shared render parameters. I have no idea why this limitation exists. I heard something about it being not implementable in all containers, but that doesn't make sense since the portal we are using runs in virtually every container.

No, the spec does not limit the sharing of parameters to only portlets, but on the other side, how would a portal implementation know that a URL targeted to a servlet should contain the current shared render parameters?
Our portal requires that shared parameters be namespaced and the portal be configured with the namespaces to share. They are available to everything (including action requests). This may not be ideal but it is better than nothing. We end up having to leverage our vendor's post login hook and then store our data in the servlet session.
In short, the spec allows me to build fairly simple portlets but is completely deficient in when it comes to building applications made up of groups of related portlets.

I completely disagree with that assessment. If you have a loosely coupled portlet component model in your mind JSR 286 will provide you with many things to create really complex applications based on different portlets in different portlet apps. If you expect that JSR 286 will provide you a model where you can create larger, pre-packaged apps that consists of pages, portlets on the pages, wires between these portlets, and themes for these pages, I agree that JSR 286 will not help you here and you need vendor extensions for now. On the other hand you get this JSR by end of this year instead of end of 2009....
To give you a perspective, the application is for online banking. Each of the portlets provides different functionality. However, many of the portlets share the user's account information, etc. Some information, such as the list of accounts, current balance, etc. needs to be retrieved during login and then shared across all the portlets. From a portal perspective it isn't an extraordinarily complex application. We have several portlets on one page that all need access to an account's history for some number of days so they can do various things with it. This kind of stuff is very messy to do with the current portlet spec and 286 doesn't seem to help much. Having to be tied to one vendor is a problem as it makes it difficult to sell the product to larger banks, which presumably would prefer to use the portal of their choosing.

One implementation that works with JSR 286 is that you register for the navigationalContextChange event, trigger that event when the page is loaded the first time, set the customer id as a shared render parameter. For providing the account history to different portlets you would create a service that would retrieve this once and cache it and this service can be called by different portlets.
Obviously, I don't want to wait until 2009 - but it sure sounds like I'm going to have to wait anyway. Frankly, there are only a few items in 286 that are of interest to me, such as support for fragments. For example, I already have portlet filters using Spring. So I'd gladly wait 6 more months to get some of these larger issues dealt with.

What you are asking for takes at least two more years of discussion, not just 6 month.

Stefan
Ralph




Reply via email to