org.apache.struts.taglib

Class TagUtils


public class TagUtils
extends java.lang.Object

Provides helper methods for JSP tags.
Version:
$Rev: 384235 $
Since:
Struts 1.2

Field Summary

private static TagUtils
instance
The Singleton instance.
private static Log
log
Commons logging instance.
private static MessageResources
messages
The message resources for this package.
private static Map
scopes
Maps lowercase JSP scope names to their PageContext integer constant values.

Constructor Summary

TagUtils()
Constructor for TagUtils.

Method Summary

Map
computeParameters(PageContext pageContext, String paramId, String paramName, String paramProperty, String paramScope, String name, String property, String scope, boolean transaction)
Compute a set of query parameters that will be dynamically added to a generated URL.
String
computeURL(PageContext pageContext, String forward, String href, String page, String action, String module, Map params, String anchor, boolean redirect)
String
computeURL(PageContext pageContext, String forward, String href, String page, String action, String module, Map params, String anchor, boolean redirect, boolean encodeSeparator)
String
computeURLWithCharEncoding(PageContext pageContext, String forward, String href, String page, String action, String module, Map params, String anchor, boolean redirect, boolean useLocalEncoding)
Compute a hyperlink URL based on the forward, href, action or page parameter that is not null.
String
computeURLWithCharEncoding(PageContext pageContext, String forward, String href, String page, String action, String module, Map params, String anchor, boolean redirect, boolean encodeSeparator, boolean useLocalEncoding)
Compute a hyperlink URL based on the forward, href, action or page parameter that is not null.
String
encodeURL(String url)
URLencodes a string assuming the character encoding is UTF-8.
String
encodeURL(String url, String enc)
Use the new URLEncoder.encode() method from Java 1.4 if available, else use the old deprecated version.
String
filter(String value)
Filter the specified string for characters that are sensitive to HTML interpreters, returning the string with these characters replaced by the corresponding character entities.
ActionErrors
getActionErrors(PageContext pageContext, String paramName)
Deprecated. Use getActionMessages() instead.
String
getActionMappingName(String action)
Return the form action converted into an action mapping path.
String
getActionMappingURL(String action, PageContext pageContext)
Return the form action converted into a server-relative URL.
String
getActionMappingURL(String action, String module, PageContext pageContext, boolean contextRelative)
Return the form action converted into a server-relative URL.
ActionMessages
getActionMessages(PageContext pageContext, String paramName)
Retrieves the value from request scope and if it isn't already an ActionMessages, some classes are converted to one.
static TagUtils
getInstance()
Returns the Singleton instance of TagUtils.
ModuleConfig
getModuleConfig(PageContext pageContext)
Return the ModuleConfig object if it exists, null if otherwise.
ModuleConfig
getModuleConfig(String module, PageContext pageContext)
Return the ModuleConfig object for the given prefix if it exists, null if otherwise.
int
getScope(String scopeName)
Converts the scope name into its corresponding PageContext constant value.
Locale
getUserLocale(PageContext pageContext, String locale)
Look up and return current user locale, based on the specified parameters.
boolean
isXhtml(PageContext pageContext)
Returns true if the custom tags are in XHTML mode.
Object
lookup(PageContext pageContext, String name, String scopeName)
Locate and return the specified bean, from an optionally specified scope, in the specified page context.
Object
lookup(PageContext pageContext, String name, String property, String scope)
Locate and return the specified property of the specified bean, from an optionally specified scope, in the specified page context.
String
message(PageContext pageContext, String bundle, String locale, String key)
Look up and return a message string, based on the specified parameters.
String
message(PageContext pageContext, String bundle, String locale, String key, args[] )
Look up and return a message string, based on the specified parameters.
String
pageURL(HttpServletRequest request, String page, ModuleConfig moduleConfig)
Return the context-relative URL that corresponds to the specified page attribute value, calculated based on the pagePattern property of the current module's ModuleConfig.
boolean
present(PageContext pageContext, String bundle, String locale, String key)
Return true if a message string for the specified message key is present for the specified Locale.
MessageResources
retrieveMessageResources(PageContext pageContext, String bundle, boolean checkPageScope)
Returns the appropriate MessageResources object for the current module and the given bundle.
void
saveException(PageContext pageContext, Throwable exception)
Save the specified exception as a request attribute for later use.
void
write(PageContext pageContext, String text)
Write the specified text as the response to the writer associated with this page.
void
writePrevious(PageContext pageContext, String text)
Write the specified text as the response to the writer associated with the body content for the tag within which we are currently nested.

Field Details

instance

private static final TagUtils instance
The Singleton instance.

log

private static final Log log
Commons logging instance.

messages

private static final MessageResources messages
The message resources for this package. TODO We need to move the relevant messages out of this properties file.

scopes

private static final Map scopes
Maps lowercase JSP scope names to their PageContext integer constant values.

Constructor Details

TagUtils

protected TagUtils()
Constructor for TagUtils.

Method Details

computeParameters

public Map computeParameters(PageContext pageContext,
                             String paramId,
                             String paramName,
                             String paramProperty,
                             String paramScope,
                             String name,
                             String property,
                             String scope,
                             boolean transaction)
            throws JspException
Compute a set of query parameters that will be dynamically added to a generated URL. The returned Map is keyed by parameter name, and the values are either null (no value specified), a String (single value specified), or a String[] array (multiple values specified). Parameter names correspond to the corresponding attributes of the <html:link> tag. If no query parameters are identified, return null.
Parameters:
pageContext - PageContext we are operating in
paramId - Single-value request parameter name (if any)
paramName - Bean containing single-value parameter value
paramProperty - Property (of bean named by paramName containing single-value parameter value
paramScope - Scope containing bean named by paramName
name - Bean containing multi-value parameters Map (if any)
property - Property (of bean named by name containing multi-value parameters Map
scope - Scope containing bean named by name
transaction - Should we add our transaction control token?
Returns:
Map of query parameters

computeURL

public String computeURL(PageContext pageContext,
                         String forward,
                         String href,
                         String page,
                         String action,
                         String module,
                         Map params,
                         String anchor,
                         boolean redirect)
            throws MalformedURLException

computeURL

public String computeURL(PageContext pageContext,
                         String forward,
                         String href,
                         String page,
                         String action,
                         String module,
                         Map params,
                         String anchor,
                         boolean redirect,
                         boolean encodeSeparator)
            throws MalformedURLException

computeURLWithCharEncoding

public String computeURLWithCharEncoding(PageContext pageContext,
                                         String forward,
                                         String href,
                                         String page,
                                         String action,
                                         String module,
                                         Map params,
                                         String anchor,
                                         boolean redirect,
                                         boolean useLocalEncoding)
            throws MalformedURLException
Compute a hyperlink URL based on the forward, href, action or page parameter that is not null. The returned URL will have already been passed to response.encodeURL() for adding a session identifier.
Parameters:
pageContext - PageContext for the tag making this call
forward - Logical forward name for which to look up the context-relative URI (if specified)
href - URL to be utilized unmodified (if specified)
page - Module-relative page for which a URL should be created (if specified)
action - Logical action name for which to look up the context-relative URI (if specified)
params - Map of parameters to be dynamically included (if any)
anchor - Anchor to be dynamically included (if any)
redirect - Is this URL for a response.sendRedirect()?
Returns:
URL with session identifier

computeURLWithCharEncoding

public String computeURLWithCharEncoding(PageContext pageContext,
                                         String forward,
                                         String href,
                                         String page,
                                         String action,
                                         String module,
                                         Map params,
                                         String anchor,
                                         boolean redirect,
                                         boolean encodeSeparator,
                                         boolean useLocalEncoding)
            throws MalformedURLException
Compute a hyperlink URL based on the forward, href, action or page parameter that is not null. The returned URL will have already been passed to response.encodeURL() for adding a session identifier.
Parameters:
pageContext - PageContext for the tag making this call
forward - Logical forward name for which to look up the context-relative URI (if specified)
href - URL to be utilized unmodified (if specified)
page - Module-relative page for which a URL should be created (if specified)
action - Logical action name for which to look up the context-relative URI (if specified)
params - Map of parameters to be dynamically included (if any)
anchor - Anchor to be dynamically included (if any)
redirect - Is this URL for a response.sendRedirect()?
encodeSeparator - This is only checked if redirect is set to false (never encoded for a redirect). If true, query string parameter separators are encoded as >amp;, else & is used.
useLocalEncoding - If set to true, urlencoding is done on the bytes of character encoding from ServletResponse#getCharacterEncoding. Use UTF-8 otherwise.
Returns:
URL with session identifier

encodeURL

public String encodeURL(String url)
URLencodes a string assuming the character encoding is UTF-8.
Parameters:
url -
Returns:
String The encoded url in UTF-8

encodeURL

public String encodeURL(String url,
                        String enc)
Use the new URLEncoder.encode() method from Java 1.4 if available, else use the old deprecated version. This method uses reflection to find the appropriate method; if the reflection operations throw exceptions, this will return the url encoded with the old URLEncoder.encode() method.
Parameters:
enc - The character encoding the urlencode is performed on.
Returns:
String The encoded url.

filter

public String filter(String value)
Filter the specified string for characters that are sensitive to HTML interpreters, returning the string with these characters replaced by the corresponding character entities.
Parameters:
value - The string to be filtered and returned

getActionErrors

public ActionErrors getActionErrors(PageContext pageContext,
                                    String paramName)
            throws JspException

Deprecated. Use getActionMessages() instead. This will be removed after Struts 1.2.

Retrieves the value from request scope and if it isn't already an ErrorMessages some classes are converted to one.
Parameters:
pageContext - The PageContext for the current page
paramName - Key for parameter value
Returns:
ActionErrors from request scope

getActionMappingName

public String getActionMappingName(String action)
Return the form action converted into an action mapping path. The value of the action property is manipulated as follows in computing the name of the requested mapping:
  • Any filename extension is removed (on the theory that extension mapping is being used to select the controller servlet).
  • If the resulting value does not start with a slash, then a slash is prepended.

getActionMappingURL

public String getActionMappingURL(String action,
                                  PageContext pageContext)
Return the form action converted into a server-relative URL.

getActionMappingURL

public String getActionMappingURL(String action,
                                  String module,
                                  PageContext pageContext,
                                  boolean contextRelative)
Return the form action converted into a server-relative URL.

getActionMessages

public ActionMessages getActionMessages(PageContext pageContext,
                                        String paramName)
            throws JspException
Retrieves the value from request scope and if it isn't already an ActionMessages, some classes are converted to one.
Parameters:
pageContext - The PageContext for the current page
paramName - Key for parameter value
Returns:
ActionErrors in page context.

getInstance

public static TagUtils getInstance()
Returns the Singleton instance of TagUtils.

getModuleConfig

public ModuleConfig getModuleConfig(PageContext pageContext)
Return the ModuleConfig object if it exists, null if otherwise.
Parameters:
pageContext - The page context.
Returns:
the ModuleConfig object

getModuleConfig

public ModuleConfig getModuleConfig(String module,
                                    PageContext pageContext)
Return the ModuleConfig object for the given prefix if it exists, null if otherwise.
Parameters:
module - The module prefix
pageContext - The page context.
Returns:
the ModuleConfig object

getScope

public int getScope(String scopeName)
            throws JspException
Converts the scope name into its corresponding PageContext constant value.
Parameters:
scopeName - Can be "page", "request", "session", or "application" in any case.
Returns:
The constant representing the scope (ie. PageContext.REQUEST_SCOPE).

getUserLocale

public Locale getUserLocale(PageContext pageContext,
                            String locale)
Look up and return current user locale, based on the specified parameters.
Parameters:
pageContext - The PageContext associated with this request
locale - Name of the session attribute for our user's Locale. If this is null, the default locale key is used for the lookup.
Returns:
current user locale

isXhtml

public boolean isXhtml(PageContext pageContext)
Returns true if the custom tags are in XHTML mode.

lookup

public Object lookup(PageContext pageContext,
                     String name,
                     String scopeName)
            throws JspException
Locate and return the specified bean, from an optionally specified scope, in the specified page context. If no such bean is found, return null instead. If an exception is thrown, it will have already been saved via a call to saveException().
Parameters:
pageContext - Page context to be searched
name - Name of the bean to be retrieved
scopeName - Scope to be searched (page, request, session, application) or null to use findAttribute() instead
Returns:
JavaBean in the specified page context

lookup

public Object lookup(PageContext pageContext,
                     String name,
                     String property,
                     String scope)
            throws JspException
Locate and return the specified property of the specified bean, from an optionally specified scope, in the specified page context. If an exception is thrown, it will have already been saved via a call to saveException().
Parameters:
pageContext - Page context to be searched
name - Name of the bean to be retrieved
property - Name of the property to be retrieved, or null to retrieve the bean itself
scope - Scope to be searched (page, request, session, application) or null to use findAttribute() instead
Returns:
property of specified JavaBean

message

public String message(PageContext pageContext,
                      String bundle,
                      String locale,
                      String key)
            throws JspException
Look up and return a message string, based on the specified parameters.
Parameters:
pageContext - The PageContext associated with this request
bundle - Name of the servlet context attribute for our message resources bundle
locale - Name of the session attribute for our user's Locale
key - Message key to be looked up and returned
Returns:
message string

message

public String message(PageContext pageContext,
                      String bundle,
                      String locale,
                      String key,
                      args[] )
            throws JspException
Look up and return a message string, based on the specified parameters.
Parameters:
pageContext - The PageContext associated with this request
bundle - Name of the servlet context attribute for our message resources bundle
locale - Name of the session attribute for our user's Locale
key - Message key to be looked up and returned
Returns:
message string

pageURL

public String pageURL(HttpServletRequest request,
                      String page,
                      ModuleConfig moduleConfig)
Return the context-relative URL that corresponds to the specified page attribute value, calculated based on the pagePattern property of the current module's ModuleConfig.
Parameters:
request - The servlet request we are processing
page - The module-relative URL to be substituted in to the pagePattern pattern for the current module (MUST start with a slash)
Returns:
context-relative URL

present

public boolean present(PageContext pageContext,
                       String bundle,
                       String locale,
                       String key)
            throws JspException
Return true if a message string for the specified message key is present for the specified Locale.
Parameters:
pageContext - The PageContext associated with this request
bundle - Name of the servlet context attribute for our message resources bundle
locale - Name of the session attribute for our user's Locale
key - Message key to be looked up and returned
Returns:
true if a message string for message key exists

retrieveMessageResources

public MessageResources retrieveMessageResources(PageContext pageContext,
                                                 String bundle,
                                                 boolean checkPageScope)
            throws JspException
Returns the appropriate MessageResources object for the current module and the given bundle.
Parameters:
pageContext - Search the context's scopes for the resources.
bundle - The bundle name to look for. If this is null, the default bundle name is used.
Returns:
MessageResources The bundle's resources stored in some scope.

saveException

public void saveException(PageContext pageContext,
                          Throwable exception)
Save the specified exception as a request attribute for later use.
Parameters:
pageContext - The PageContext for the current page
exception - The exception to be saved

write

public void write(PageContext pageContext,
                  String text)
            throws JspException
Write the specified text as the response to the writer associated with this page. WARNING - If you are writing body content from the doAfterBody() method of a custom tag class that implements BodyTag, you should be calling writePrevious() instead.
Parameters:
pageContext - The PageContext object for this page
text - The text to be written

writePrevious

public void writePrevious(PageContext pageContext,
                          String text)
            throws JspException
Write the specified text as the response to the writer associated with the body content for the tag within which we are currently nested.
Parameters:
pageContext - The PageContext object for this page
text - The text to be written

Copyright B) 2000-2007 - The Apache Software Foundation