Package org.apache.wiki.tags
Package specification
This package contains a diverse set of JSP tags which are used in the template pages.
Managing tag pooling
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!
Related documentation
TBD.-
Interface Summary 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 Summary Class Description AdminBeanIteratorInfo Just provides iteration support for AdminBeanIteratorTagAdminBeanIteratorTag 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 implementationCalendarTag 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.CsrfProtectionTag Outputs the hiddenCsrfProtectionFilter.ANTICSRF_PARAM
.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.SpamFilterInputsTag Provides hidden input fields which are checked by theSpamFilter
.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.