Hello,

I was wondering if adding a predefined data model for navigationPath using 
the true path visited by the user rather than just another representation 
of the menu hierarchy would be interesting. An user asked for that on the 
user list not too long ago. I would implement it using a PhaseListener 
automatically attached by AdfFacesFilter. That listener would simply 
register the viewed viewIds in the user's session before the render 
response phase if the request was not a PPR one. The model would then 
simply read the saved list and expose the locations accordingly. The only 
problems I see are:

1) If the user never use the breadcrumbs, the phase listener will work for 
nothing consuming both memory and CPU usage. Maybe the listener should be 
attached only if a specific context-param exists? Another way would be to 
ceate a new functional tag used to mark a page as visited when executed. 
That solution would make it easier for users to exclude some pages from 
the history, but requires an user intervention in all the pages. Yet 
another way to acheive it would be to include the code in af:document 
and/or in af:body directly, but that solution have the same disadvantages 
as the phase listener and is quite unclean.

2) Where should the max amount of visible location specified? 
context-param? breadcrumbs component attribute? skin?

3) What kind of action should be taken when the user click the link? The 
model could expose an execute method, but unlike the menu model I uploaded 
on JIRA, the path is not configured in any XML file and thus you cannot 
attach a method binding to it. If the user simply add its own action 
binding, then he'll need to access the right viewId. That could be done 
using getRowData, but from experience users are not huge fans of messing 
with DataModel directly.

Simon Lessard
Fujitsu Consulting

Reply via email to