Class FilteringHeaderResponse
- java.lang.Object
-
- org.apache.wicket.markup.html.DecoratingHeaderResponse
-
- org.apache.wicket.markup.head.filter.FilteringHeaderResponse
-
- All Implemented Interfaces:
Closeable
,AutoCloseable
,IHeaderResponse
- Direct Known Subclasses:
JavaScriptFilteredIntoFooterHeaderResponse
public class FilteringHeaderResponse extends DecoratingHeaderResponse
This header response allows you to separate things that are added to the IHeaderResponse into different buckets. Then, you can render those different buckets in separate areas of the page based on your filter logic. A typical use case for this header response is to move the loading of JavaScript files (and inline script tags) to the footer of the page.- Author:
- Jeremy Thomerson, Emond Papegaaij
- See Also:
HeaderResponseContainer
,CssAcceptingHeaderResponseFilter
,JavaScriptAcceptingHeaderResponseFilter
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interface
FilteringHeaderResponse.IHeaderResponseFilter
A filter used to bucket your resources, inline scripts, etc, into different responses.
-
Field Summary
Fields Modifier and Type Field Description static String
DEFAULT_HEADER_FILTER_NAME
The default name of the filter that will collect contributions which should be rendered in the page's <head>
-
Constructor Summary
Constructors Constructor Description FilteringHeaderResponse(IHeaderResponse response)
Constructor without explicit filters.FilteringHeaderResponse(IHeaderResponse response, String headerFilterName, Iterable<? extends FilteringHeaderResponse.IHeaderResponseFilter> filters)
Construct.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
close()
Mark Header rendering is completed and subsequent usage will be ignored.protected IHeaderResponse
decorate(IHeaderResponse response)
Decorate the given response used to get contents.static FilteringHeaderResponse
get()
CharSequence
getContent(String filterName)
Gets the content that was rendered to this header response and matched the filter with the given name.void
render(HeaderItem item)
Renders the givenHeaderItem
to the response if none of its tokens has been rendered before.protected void
render(HeaderItem item, List<HeaderItem> filteredItems)
protected void
setFilters(Iterable<? extends FilteringHeaderResponse.IHeaderResponseFilter> filters)
-
Methods inherited from class org.apache.wicket.markup.html.DecoratingHeaderResponse
getRealResponse, getResponse, isClosed, markRendered, wasRendered
-
-
-
-
Field Detail
-
DEFAULT_HEADER_FILTER_NAME
public static final String DEFAULT_HEADER_FILTER_NAME
The default name of the filter that will collect contributions which should be rendered in the page's <head>- See Also:
- Constant Field Values
-
-
Constructor Detail
-
FilteringHeaderResponse
public FilteringHeaderResponse(IHeaderResponse response)
Constructor without explicit filters. Generates filters automatically for any FilteredHeaderItem. Any other contribution is rendered in the page's <head>- Parameters:
response
- the wrapped IHeaderResponse- See Also:
HeaderResponseContainer
-
FilteringHeaderResponse
public FilteringHeaderResponse(IHeaderResponse response, String headerFilterName, Iterable<? extends FilteringHeaderResponse.IHeaderResponseFilter> filters)
Construct.- Parameters:
response
- the wrapped IHeaderResponseheaderFilterName
- the name that the filter for things that should appear in the head (default Wicket location) usesfilters
- the filters to use to bucket things. There will be a bucket created for each filter, by name. There should typically be at least one filter with the same name as your headerFilterName
-
-
Method Detail
-
setFilters
protected void setFilters(Iterable<? extends FilteringHeaderResponse.IHeaderResponseFilter> filters)
-
get
public static FilteringHeaderResponse get()
- Returns:
- the FilteringHeaderResponse being used in this RequestCycle
-
render
public void render(HeaderItem item)
Description copied from interface:IHeaderResponse
Renders the givenHeaderItem
to the response if none of its tokens has been rendered before.Automatically marks all item's tokens as rendered.
- Specified by:
render
in interfaceIHeaderResponse
- Overrides:
render
in classDecoratingHeaderResponse
- Parameters:
item
- The item to render.- See Also:
IHeaderResponse.markRendered(Object)
-
close
public void close()
Description copied from interface:IHeaderResponse
Mark Header rendering is completed and subsequent usage will be ignored. If some kind of buffering is used internally, this action will mark that the contents has to be flushed out.- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Specified by:
close
in interfaceIHeaderResponse
- Overrides:
close
in classDecoratingHeaderResponse
-
getContent
public final CharSequence getContent(String filterName)
Gets the content that was rendered to this header response and matched the filter with the given name.- Parameters:
filterName
- the name of the filter to get the bucket for- Returns:
- the content that was accepted by the filter with this name
-
decorate
protected IHeaderResponse decorate(IHeaderResponse response)
Decorate the given response used to get contents.- Parameters:
response
- response to decorate- Returns:
- default implementation just returns the response
-
render
protected void render(HeaderItem item, List<HeaderItem> filteredItems)
-
-