Class SitemapUrl

All Implemented Interfaces:
PartialStateHolder, StateHolder, TransientStateHolder, ComponentSystemEventListener, FacesListener, SystemEventListenerHolder, EventListener

public class SitemapUrl extends OutputFamily

The <o:sitemapUrl> is a component which renders the given target URL or Faces view ID as a sitemap URL with support for adding additional query string parameters to the URL via nested <f:param> and <o:param>.

This component is largely based off the Url component behind <o:url>, but then tailored specifically for usage in sitemap.xml file. The ViewResourceHandler must be registered in faces-config.xml in order to get Faces components to run in /sitemap.xml.

Values

You can supply the sitemap URL via either the value attribute or the viewId attribute. When both are specified, the value attribute takes precedence and the viewId attribute is ignored.

Domain

When the target URL is specified as viewId, then the domain of the target 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:sitemapUrl ... domain="https://example.com" />
  • <o:sitemapUrl ... domain="//example.com" />
  • <o:sitemapUrl ... domain="example.com" />
  • <o:sitemapUrl ... domain="/" />
  • <o:sitemapUrl ... domain="//" />

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

Request parameters

You can add query string parameters to the URL via nested <f:param> and <o:param>. To conditionally add or override, use the disabled attribute of <f|o:param>.

Usage

Usage example of /sitemap.xml as a Faces view:

 <?xml version="1.0" encoding="UTF-8"?>
 <urlset
     xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
     xmlns:ui="jakarta.faces.facelets"
     xmlns:o="omnifaces"
 >
     <ui:repeat value="#{sitemapBean.products}" var="product">
         <o:sitemapUrl viewId="/product.xhtml" lastModified="#{product.lastModified}" changeFrequency="weekly" priority="1.0">
             <o:param name="id" value="#{product}" converter="productConverter" />
         </o:sitemapUrl>
     </ui:repeat>
 </urlset>
 
Since:
3.10
Author:
Bauke Scholtz
See Also:
  • Field Details

    • COMPONENT_TYPE

      public static final String COMPONENT_TYPE
      The component type, which is "org.omnifaces.component.output.SitemapUrl".
      See Also:
  • Constructor Details

  • Method Details

    • encodeBegin

      public void encodeBegin(FacesContext context) throws IOException
      Renders the start of the <url> parent element.
      Overrides:
      encodeBegin in class UIComponentBase
      Throws:
      IOException
    • encodeChildren

      public void encodeChildren(FacesContext context) throws IOException
      Overrides:
      encodeChildren in class UIComponentBase
      Throws:
      IOException
    • encodeEnd

      public void encodeEnd(FacesContext context) throws IOException
      Renders the end of the <url> parent element.
      Overrides:
      encodeEnd in class UIComponentBase
      Throws:
      IOException
    • encodeLocation

      protected void encodeLocation(FacesContext context) throws IOException
      Renders the <loc> child element with either the value of getValue(), or the value of getViewId() and getDomain() combined.
      Parameters:
      context - The involved faces context.
      Throws:
      IOException - When an I/O error occurs.
      IllegalArgumentException - When the getDomain() does not represent a valid domain.
    • encodeLastModified

      protected void encodeLastModified(FacesContext context) throws IOException
      Renders the <lastmod> child element with the value of getLastModified(), if any. It may only encode formats specified in https://www.w3.org/TR/NOTE-datetime
      Parameters:
      context - The involved faces context.
      Throws:
      IOException - When an I/O error occurs.
    • encodeChangeFrequency

      protected void encodeChangeFrequency(FacesContext context) throws IOException
      Renders the <changefreq> child element with the value of getChangeFrequency(), if any.
      Parameters:
      context - The involved faces context.
      Throws:
      IOException - When an I/O error occurs.
    • encodePriority

      protected void encodePriority(FacesContext context) throws IOException
      Renders the <priority> child element with the value of getPriority(), if any.
      Parameters:
      context - The involved faces context.
      Throws:
      IOException - When an I/O error occurs.
      IllegalArgumentException - When the getPriority() is not between 0.0 and 1.0 (inclusive).
    • getValue

      public String getValue()
      Returns the value of the "loc" element of the sitemap URL. Note: when specified, then getViewId() and getDomain() are ignored.
      Returns:
      The value of the "loc" element of the sitemap URL.
    • setValue

      public void setValue(String value)
      Sets the value of the "loc" element of the sitemap URL. Note: when specified, then getViewId() and getDomain() are ignored.
      Parameters:
      value - The value of the "loc" element of the sitemap URL.
    • getViewId

      public String getViewId()
      Returns the view ID to create the URI part of the "loc" element of the sitemap URL for. Note: this is ignored when getValue() is specified.
      Returns:
      The view ID to create the URI part of the "loc" element of the sitemap URL for.
    • setViewId

      public void setViewId(String viewId)
      Sets the view ID to create the URI part of the "loc" element of the sitemap URL for. Note: this is ignored when getValue() is specified.
      Parameters:
      viewId - The view ID to create the URI part of the "loc" element of the sitemap URL for.
    • getDomain

      public String getDomain()
      Returns the domain of the "loc" element of the sitemap URL. Note: this is ignored when getValue() is specified.
      Returns:
      The domain of the "loc" element of the sitemap URL for.
    • setDomain

      public void setDomain(String domain)
      Sets the domain of the "loc" element of the sitemap URL. Note: this is ignored when getValue() is specified.
      Parameters:
      domain - The domain of the "loc" element of the sitemap URL for.
    • getLastModified

      public Temporal getLastModified()
      Returns the value of the "lastmod" element of the sitemap URL.
      Returns:
      The value of the "lastmod" element of the sitemap URL.
    • setLastModified

      public void setLastModified(Temporal lastModified)
      Sets the value of the "lastmod" element of the sitemap URL.
      Parameters:
      lastModified - The value of the "lastmod" element of the sitemap URL.
    • getChangeFrequency

      public SitemapUrl.ChangeFrequency getChangeFrequency()
      Returns the value of the "changefreq" element of the sitemap URL.
      Returns:
      The value of the "changefreq" element of the sitemap URL.
    • setChangeFrequency

      public void setChangeFrequency(SitemapUrl.ChangeFrequency changeFrequency)
      Sets the value of the "changefreq" element of the sitemap URL.
      Parameters:
      changeFrequency - The value of the "changefreq" element of the sitemap URL.
    • getPriority

      public BigDecimal getPriority()
      Returns the value of the "priority" element of the sitemap URL.
      Returns:
      The value of the "priority" element of the sitemap URL.
    • setPriority

      public void setPriority(BigDecimal priority)
      Sets the value of the "priority" element of the sitemap URL.
      Parameters:
      priority - The value of the "priority" element of the sitemap URL.