- java.lang.Object
-
- jakarta.faces.component.UIComponent
-
- jakarta.faces.component.UIComponentBase
-
- org.omnifaces.component.output.OutputFamily
-
- org.omnifaces.component.output.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 insitemap.xml
file. TheViewResourceHandler
must be registered infaces-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 theviewId
attribute. When both are specified, thevalue
attribute takes precedence and theviewId
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 thedomain
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 byURL
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 thevalue
attribute is specified, then thedomain
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 thedisabled
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="http://xmlns.jcp.org/jsf/facelets" xmlns:o="http://omnifaces.org/ui" > <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:
OutputFamily
,ViewResourceHandler
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
SitemapUrl.ChangeFrequency
The available values of the "changefreq" element of the sitemap URL.
-
Field Summary
Fields Modifier and Type Field Description static String
COMPONENT_TYPE
The component type, which is "org.omnifaces.component.output.SitemapUrl".-
Fields inherited from class org.omnifaces.component.output.OutputFamily
COMPONENT_FAMILY
-
Fields inherited from class jakarta.faces.component.UIComponent
ATTRS_WITH_DECLARED_DEFAULT_VALUES, BEANINFO_KEY, bindings, COMPOSITE_COMPONENT_TYPE_KEY, COMPOSITE_FACET_NAME, CURRENT_COMPONENT, CURRENT_COMPOSITE_COMPONENT, FACETS_KEY, HONOR_CURRENT_COMPONENT_ATTRIBUTES_PARAM_NAME, VIEW_LOCATION_KEY
-
-
Constructor Summary
Constructors Constructor Description SitemapUrl()
Constructs theSitemapUrl
component.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
encodeBegin(FacesContext context)
Renders the start of the<url>
parent element.protected void
encodeChangeFrequency(FacesContext context)
Renders the<changefreq>
child element with the value ofgetChangeFrequency()
, if any.void
encodeChildren(FacesContext context)
Delegates toencodeLocation(FacesContext)
,encodeLastModified(FacesContext)
,encodeChangeFrequency(FacesContext)
andencodePriority(FacesContext)
in this order.void
encodeEnd(FacesContext context)
Renders the end of the<url>
parent element.protected void
encodeLastModified(FacesContext context)
Renders the<lastmod>
child element with the value ofgetLastModified()
, if any.protected void
encodeLocation(FacesContext context)
Renders the<loc>
child element with either the value ofgetValue()
, or the value ofgetViewId()
andgetDomain()
combined.protected void
encodePriority(FacesContext context)
Renders the<priority>
child element with the value ofgetPriority()
, if any.SitemapUrl.ChangeFrequency
getChangeFrequency()
Returns the value of the "changefreq" element of the sitemap URL.String
getDomain()
Returns the domain of the "loc" element of the sitemap URL.Temporal
getLastModified()
Returns the value of the "lastmod" element of the sitemap URL.BigDecimal
getPriority()
Returns the value of the "priority" element of the sitemap URL.String
getValue()
Returns the value of the "loc" element of the sitemap URL.String
getViewId()
Returns the view ID to create the URI part of the "loc" element of the sitemap URL for.void
setChangeFrequency(SitemapUrl.ChangeFrequency changeFrequency)
Sets the value of the "changefreq" element of the sitemap URL.void
setDomain(String domain)
Sets the domain of the "loc" element of the sitemap URL.void
setLastModified(Temporal lastModified)
Sets the value of the "lastmod" element of the sitemap URL.void
setPriority(BigDecimal priority)
Sets the value of the "priority" element of the sitemap URL.void
setValue(String value)
Sets the value of the "loc" element of the sitemap URL.void
setViewId(String viewId)
Sets the view ID to create the URI part of the "loc" element of the sitemap URL for.-
Methods inherited from class org.omnifaces.component.output.OutputFamily
getFamily, getRendersChildren
-
Methods inherited from class jakarta.faces.component.UIComponentBase
addClientBehavior, addFacesListener, broadcast, clearInitialState, decode, findComponent, getAttributes, getChildCount, getChildren, getClientBehaviors, getClientId, getDefaultEventName, getEventNames, getFacesContext, getFacesListeners, getFacet, getFacetCount, getFacets, getFacetsAndChildren, getId, getListenersForEventClass, getParent, getPassThroughAttributes, getRenderer, getRendererType, getValueBinding, invokeOnComponent, isRendered, isTransient, markInitialState, processDecodes, processRestoreState, processSaveState, processUpdates, processValidators, queueEvent, removeFacesListener, restoreAttachedState, restoreState, saveAttachedState, saveState, setId, setParent, setRendered, setRendererType, setTransient, setValueBinding, subscribeToEvent, unsubscribeFromEvent
-
Methods inherited from class jakarta.faces.component.UIComponent
encodeAll, getClientId, getCompositeComponentParent, getContainerClientId, getCurrentComponent, getCurrentCompositeComponent, getNamingContainer, getPassThroughAttributes, getResourceBundleMap, getStateHelper, getStateHelper, getTransientStateHelper, getTransientStateHelper, getValueExpression, initialStateMarked, isCompositeComponent, isInView, isVisitable, popComponentFromEL, processEvent, pushComponentToEL, restoreTransientState, saveTransientState, setInView, setValueExpression, visitTree
-
-
-
-
Field Detail
-
COMPONENT_TYPE
public static final String COMPONENT_TYPE
The component type, which is "org.omnifaces.component.output.SitemapUrl".- See Also:
- Constant Field Values
-
-
Constructor Detail
-
SitemapUrl
public SitemapUrl()
Constructs theSitemapUrl
component.- Throws:
IllegalStateException
- whenApplication.getProjectStage()
isProjectStage.Development
and the current request is not for theViewResourceHandler
at all.
-
-
Method Detail
-
encodeBegin
public void encodeBegin(FacesContext context) throws IOException
Renders the start of the<url>
parent element.- Overrides:
encodeBegin
in classUIComponentBase
- Throws:
IOException
-
encodeChildren
public void encodeChildren(FacesContext context) throws IOException
Delegates toencodeLocation(FacesContext)
,encodeLastModified(FacesContext)
,encodeChangeFrequency(FacesContext)
andencodePriority(FacesContext)
in this order.- Overrides:
encodeChildren
in classUIComponentBase
- Throws:
IOException
-
encodeEnd
public void encodeEnd(FacesContext context) throws IOException
Renders the end of the<url>
parent element.- Overrides:
encodeEnd
in classUIComponentBase
- Throws:
IOException
-
encodeLocation
protected void encodeLocation(FacesContext context) throws IOException
Renders the<loc>
child element with either the value ofgetValue()
, or the value ofgetViewId()
andgetDomain()
combined.- Parameters:
context
- The involved faces context.- Throws:
IOException
- When an I/O error occurs.IllegalArgumentException
- When thegetDomain()
does not represent a valid domain.
-
encodeLastModified
protected void encodeLastModified(FacesContext context) throws IOException
Renders the<lastmod>
child element with the value ofgetLastModified()
, 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 ofgetChangeFrequency()
, 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 ofgetPriority()
, if any.- Parameters:
context
- The involved faces context.- Throws:
IOException
- When an I/O error occurs.IllegalArgumentException
- When thegetPriority()
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, thengetViewId()
andgetDomain()
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, thengetViewId()
andgetDomain()
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 whengetValue()
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 whengetValue()
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 whengetValue()
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 whengetValue()
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.
-
-