• cdi
  • components
  • contexts
  • converters
  • el
  • eventlisteners
  • exceptionhandlers
  • facesviews
  • filters
  • functions
  • managedbeans
  • push
  • resourcehandlers
  • scripts
  • servlets
  • taghandlers
  • utils
  • validators
  • viewhandlers
 - 
  • cache
  • commandScript
  • componentIdParam
  • conditionalComment
  • deferredScript
  • form
  • graphicImage
  • highlight
  • inputFile
  • messages
  • moveComponent
  • onloadScript
  • outputFormat
  • outputLabel
  • param
  • resolveComponent
  • resourceInclude
  • tree
  • url
  • viewAction
  • viewParam

Available since OmniFaces 2.4

The <o:url> is a component which renders the given JSF view ID as a bookmarkable URL with support for exposing it into the request scope by the variable name as specified by the var attribute instead of rendering it.

This component also supports adding query string parameters to the URL via nested <f:param> and <o:param>. This can be used in combination with includeViewParams and includeRequestParams. The <f|o:param> will override any included view or request parameters on the same name. To conditionally add or override, use the disabled attribute of <f|o:param>.

This component fills the gap caused by absence of JSTL <c:url> in Facelets. This component is useful for generating URLs for usage in e.g. plain HTML <link> elements and JavaScript variables.

Domain

The domain of the URL defaults to the current domain. It is possible to provide a full qualified domain name (FQDN) via the domain attribute which the URL is to be prefixed with. This can be useful if a canonical page shall point to a different domain or a specific subdomain.

Valid formats and values for domain attribute are:

  • <o:url domain="http://example.com" />
  • <o:url domain="//example.com" />
  • <o:url domain="example.com" />
  • <o:url domain="/" />
  • <o:url domain="//" />

The domain value will be validated by URL and throw an illegal argument exception when invalid. If the value equals /, then the URL becomes domain-relative. If the value equals or starts with //, or does not contain any scheme, then the URL becomes scheme-relative.

Request and view parameters

You can optionally include all GET request query string parameters or only JSF view parameters in the resulting URL via includeRequestParams="true" or includeViewParams="true". The includeViewParams is ignored when includeRequestParams="true". The <f|o:param> will override any included request or view parameters on the same name.

Usage

Some examples:

<p>Full URL of current page is: <o:url /></p>
<p>Full URL of another page is: <o:url viewId="/another.xhtml" /></p>
<p>Full URL of current page including view params is: <o:url includeViewParams="true" /></p>
<p>Full URL of current page including query string is: <o:url includeRequestParams="true" /></p>
<p>Domain-relative URL of current page is: <o:url domain="/" /></p>
<p>Scheme-relative URL of current page is: <o:url domain="//" /></p>
<p>Scheme-relative URL of current page on a different domain is: <o:url domain="sub.example.com" /></p>
<p>Full URL of current page on a different domain is: <o:url domain="https://sub.example.com" /></p>
<o:url var="_linkCanonical">
    <o:param name="foo" value="#{bean.foo}" />
</o:url>
<link rel="canonical" href="#{_linkCanonical}" />
<o:url var="_linkNext" includeViewParams="true">
    <f:param name="page" value="#{bean.pageIndex + 1}" />
</o:url>
<link rel="next" href="#{_linkNext}" />
Demo

Full URL of current page is: http://showcase.omnifaces.org/components/url

Full URL of another page is: http://showcase.omnifaces.org/whatsnew

Domain-relative URL of current page is: /components/url

Scheme-relative URL of current page is: //showcase.omnifaces.org/components/url

Scheme-relative URL of current page on a different domain is: //sub.example.com/components/url

Full URL of current page on a different domain is: https://sub.example.com/components/url

Demo source code
<p>Full URL of current page is: <o:url /></p>
<p>Full URL of another page is: <o:url viewId="/whatsnew" /></p>
<p>Domain-relative URL of current page is: <o:url domain="/" /></p>
<p>Scheme-relative URL of current page is: <o:url domain="//" /></p>
<p>Scheme-relative URL of current page on a different domain is: <o:url domain="sub.example.com" /></p>
<p>Full URL of current page on a different domain is: <o:url domain="https://sub.example.com" /></p>
Documentation & Sources