Interface | Description |
---|---|
ParamHandler |
Interface to be implemented by any tag that wishes to contain
a wiki:param tag for passing dynamic name-value pairs.
|
Class | Description |
---|---|
AdminBeanIteratorInfo |
Just provides iteration support for AdminBeanIteratorTag
|
AdminBeanIteratorTag |
Provides an iterator for all AdminBeans of a given type.
|
AttachmentsIteratorInfo |
Just provides the TEI data for AttachmentsIteratorTag.
|
AttachmentsIteratorTag |
Iterates through the list of attachments one has.
|
AuthorTag |
Writes the author name of the current page, including a link to that page,
if that page exists.
|
BaseURLTag |
Writes the jspwiki baseURL.
|
BreadcrumbsTag |
Implement a "breadcrumb" (most recently visited) trail.
|
BreadcrumbsTag.FixedQueue |
Extends the LinkedList class to provide a fixed-size queue implementation
|
CalendarTag |
Provides a nice calendar.
|
CheckLockInfo |
A companion to CheckLogTag.
|
CheckLockTag |
Checks whether the page is locked for editing.
|
CheckRequestContextTag |
Includes body, if the request context matches.
|
CheckVersionTag |
Does a version check on the page.
|
CommentLinkTag |
Writes a comment link.
|
ContentEncodingTag |
Returns the app name.
|
ContentTag |
Is used as a "super include" tag, which can include the proper context
based on the wikicontext.
|
CookieTag |
Sets or gets Cookie values.
|
DiffLinkTag |
Writes a diff link.
|
EditLinkTag |
Writes an edit link.
|
EditorIteratorInfo |
Just provides the TEI data for EditorIteratorTag.
|
EditorIteratorTag |
Iterates through editors.
|
EditorTag |
Creates an editor component with all the necessary parts
to get it working.
|
FeedDiscoveryTag |
Outputs links to all the site feeds and APIs this Wiki/blog supports.
|
HasAttachmentsTag |
Includes body if page has attachments.
|
HistoryIteratorInfo |
Just provides the TEI data for HistoryIteratorTag.
|
HistoryIteratorTag |
Iterates through tags.
|
IfNoSearchResultsTag |
If there have been no search results, then outputs the body text.
|
IncludeResourcesTag |
This tag is used to include any programmatic includes into the
output stream.
|
IncludeTag |
Includes an another JSP page, making sure that we actually pass
the WikiContext correctly.
|
InsertDiffTag |
Writes difference between two pages using a HTML table.
|
InsertPageTag |
Renders WikiPage content.
|
IteratorTag |
Iterates through tags.
|
LinkTag |
Provides a generic link tag for all kinds of linking
purposes.
|
LinkToParentTag |
Writes a link to a parent of a Wiki page.
|
LinkToTag |
Writes a link to a Wiki page.
|
MessagesTag |
Returns or clears the current messages associated with the user's wiki
session.
|
NextVersionTag |
Writes the version number of the next version of the page.
|
NoSuchPageTag |
Includes the body in case there is no such page available.
|
PageDateTag |
Writes the modification date of the page, formatted
as specified in the attribute "format".
|
PageExistsTag |
Includes the body in case the set page does exist.
|
PageInfoLinkTag |
Writes a link to the Wiki PageInfo.
|
PageNameTag |
Returns the currently requested page name.
|
PageSizeTag |
Returns the currently requested page or attachment size.
|
PageTypeTag |
Includes the body, if the current page is of proper type.
|
PageVersionTag |
Writes the version of the current page.
|
ParamTag |
ParamTag submits name-value pairs to the first enclosing
ParamHandler instance.
|
ParentPageNameTag |
Returns the parent of the currently requested page.
|
PermissionTag |
Tells whether the user in the current wiki context possesses a particular
permission.
|
PluginTag |
Inserts any Wiki plugin.
|
PreviousVersionTag |
Outputs the version number of the previous version of this page.
|
RequestResourceTag |
Provides easy access to TemplateManager.addResourceRequest().
|
RSSImageLinkTag |
Writes an image link to a JSPWiki RSS file.
|
SearchResultIteratorInfo |
Just provides the TEI data for IteratorTag.
|
SearchResultIteratorTag |
Iterates through Search result results.
|
SearchResultsSizeTag |
Outputs the size of the search results list, if it contains any items.
|
SearchResultsTag |
Includes the body content, if there are any search results.
|
SetPaginationTag |
Calculate pagination string.
|
TabbedSectionTag |
Generates tabbed page section: container for the Tab tag.
|
TabTag |
Generates single tabbed page layout.
|
TemplateDirTag |
Returns the currently used template.
|
TranslateTag |
Converts the body text into HTML content.
|
UploadLinkTag |
Writes a link to the upload page.
|
UserCheckTag |
Includes the content if an user check validates.
|
UserNameTag |
Returns the current user name, or empty, if the user has not been
validated.
|
UserProfileTag |
Returns user profile attributes, or empty strings if the user has not been
validated.
|
VariableTag |
Returns the value of an Wiki variable.
|
WikiBodyTag |
This is a class that provides the same services as the WikiTagBase, but this time it
works for the BodyTagSupport base class.
|
WikiLinkTag |
Root class for different internal wiki links.
|
WikiTagBase |
Base class for JSPWiki tags.
|
This package contains a diverse set of JSP tags which are used in the template pages.
A typical problem for many tag developers is that many web containers pool tags, i.e. the tag is not released after doEndTag(), but put into a pool, from which it can be invoked again. This is highly efficient, as you don't need to instantiate the tag again.
The problem, however, is that when your tag is put back into the pool, it still retains all the internal references, i.e. none of the member fields are cleared. This means there can be dangling references to things which will take a lot of memory. In JSPWiki's case, the WikiContext is a good example: it can actually contain quite a lot of stuff accumulated during it's life time, and therefore it's important for memory use that all references are cleared.
Unfortunately, the "easy" solution of implementing your custom release handler
in Tag.release()
does not help, since it is called only when the tag
is truly and completely released from the pool. So, as long as the tag sits
in the pool, release() is not called, and your references keep on dangling like wet
spaghetti off the balcony.
Neither can you trust e.g. doEndTag() being called every time, since e.g. if there is an exception, doEndTag() is never called.
The correct way to do reference cleaning is to implement the TryCatchFinally
interface, where the doFinally()
method is called every time the tag
has been finished with and prior to it being put back into the pool. Most JSPWiki
base tag classes IteratorTag
and WikiTagBase
implement the TryCatchFinally
interface, which means that any class subclassed from them also allows has those methods.
Check out the javadocs for the tags for more info!
Copyright © 2001-2019 The Apache Software Foundation. All rights reserved.