Class DynamicRoutesNavigationHandler


public class DynamicRoutesNavigationHandler extends ConfigurableNavigationHandler
Resolves an outcome which spells out a dynamic route with its segment values already filled in, such as <h:link outcome="/organizations/123/members" />, so that the concrete URL can be used as the outcome instead of the bracketed template plus a <o:pathParam name> for every segment.

Such an outcome resolves to no view of its own, as the only view on disk is the bracketed one, so the standard navigation handler finds no navigation case for it and the outcome target component renders without a target at all. This wrapper walks the scanned dynamic routes instead and, on a match, produces a navigation case which points at the physical bracketed view and carries the resolved segment values as parameters named after "org.omnifaces.pathparam.". Both implementations merge the parameters of a navigation case into the ones handed to ViewHandler.getBookmarkableURL(FacesContext, String, Map, boolean), which is where FacesViewsViewHandler substitutes them back into the URL.

Only the named segments come from the outcome. An outcome whose trailing segments would be swallowed as the path info of a MultiViews view resolves to no navigation case, as a navigation case has no way to carry them; name the view itself in the outcome and supply those segments with a nested unnamed <o:pathParam>.

Since:
5.5
Author:
Bauke Scholtz
See Also: