public abstract class

PortletUtils

extends Object
java.lang.Object
   ↳ org.springframework.web.portlet.util.PortletUtils

Class Overview

Miscellaneous utilities for portlet applications. Used by various framework classes.

Summary

Public Constructors
PortletUtils()
Public Methods
static void clearAllRenderParameters(ActionResponse response)
Clear all the render parameters from the javax.portlet.ActionResponse.
static void exposeRequestAttributes(PortletRequest request, Map<String, ?> attributes)
Expose the given Map as request attributes, using the keys as attribute names and the values as corresponding attribute values.
static Cookie getCookie(PortletRequest request, String name)
Retrieve the first cookie with the given name.
static <T> T getNativeRequest(PortletRequest request, Class<T> requiredType)
Return an appropriate request object of the specified type, if available, unwrapping the given request as far as necessary.
static <T> T getNativeResponse(PortletResponse response, Class<T> requiredType)
Return an appropriate response object of the specified type, if available, unwrapping the given response as far as necessary.
static Object getOrCreateSessionAttribute(PortletSession session, String name, Class clazz)
Get the specified session attribute under the javax.portlet.PortletSession#PORTLET_SCOPE, creating and setting a new attribute if no existing found.
static Object getOrCreateSessionAttribute(PortletSession session, String name, Class clazz, int scope)
Get the specified session attribute in the given scope, creating and setting a new attribute if no existing found.
static Map<StringObject> getParametersStartingWith(PortletRequest request, String prefix)
Return a map containing all parameters with the given prefix.
static String getRealPath(PortletContext portletContext, String path)
Return the real path of the given path within the web application, as provided by the portlet container.
static Object getRequiredSessionAttribute(PortletRequest request, String name)
Check the given request for a session attribute of the given name under the javax.portlet.PortletSession#PORTLET_SCOPE.
static Object getRequiredSessionAttribute(PortletRequest request, String name, int scope)
Check the given request for a session attribute of the given name in the given scope.
static Object getSessionAttribute(PortletRequest request, String name)
Check the given request for a session attribute of the given name under the javax.portlet.PortletSession#PORTLET_SCOPE.
static Object getSessionAttribute(PortletRequest request, String name, int scope)
Check the given request for a session attribute of the given name in the given scope.
static Object getSessionMutex(PortletSession session)
Return the best available mutex for the given session: that is, an object to synchronize on for the given session.
static String getSubmitParameter(PortletRequest request, String name)
Return the full name of a specific input type="submit" parameter if it was sent in the request, either via a button (directly with name) or via an image (name + ".x" or name + ".y").
static int getTargetPage(PortletRequest request, String paramPrefix, int currentPage)
Return the target page specified in the request.
static File getTempDir(PortletContext portletContext)
Return the temporary directory for the current web application, as provided by the portlet container.
static boolean hasSubmitParameter(PortletRequest request, String name)
Check if a specific input type="submit" parameter was sent in the request, either via a button (directly with name) or via an image (name + ".x" or name + ".y").
static void passAllParametersToRenderPhase(ActionRequest request, ActionResponse response)
Pass all the action request parameters to the render phase by putting them into the action response object.
static void serveResource(ResourceRequest request, ResourceResponse response, PortletContext context)
Serve the resource as specified in the given request to the given response, using the PortletContext's request dispatcher.
static void setSessionAttribute(PortletRequest request, String name, Object value, int scope)
Set the session attribute with the given name to the given value in the given scope.
static void setSessionAttribute(PortletRequest request, String name, Object value)
Set the session attribute with the given name to the given value under the javax.portlet.PortletSession#PORTLET_SCOPE.
[Expand]
Inherited Methods
From class java.lang.Object

Public Constructors

public PortletUtils ()

Public Methods

public static void clearAllRenderParameters (ActionResponse response)

Clear all the render parameters from the javax.portlet.ActionResponse. This may not be called when the action will call ActionResponse#sendRedirect sendRedirect.

Parameters
response the current action response
See Also
  • ActionResponse#setRenderParameters

public static void exposeRequestAttributes (PortletRequest request, Map<String, ?> attributes)

Expose the given Map as request attributes, using the keys as attribute names and the values as corresponding attribute values. Keys must be Strings.

Parameters
request current portlet request
attributes the attributes Map

public static Cookie getCookie (PortletRequest request, String name)

Retrieve the first cookie with the given name. Note that multiple cookies can have the same name but different paths or domains.

Parameters
request current portlet request
name cookie name
Returns
  • the first cookie with the given name, or null if none is found

public static T getNativeRequest (PortletRequest request, Class<T> requiredType)

Return an appropriate request object of the specified type, if available, unwrapping the given request as far as necessary.

Parameters
request the portlet request to introspect
requiredType the desired type of request object
Returns
  • the matching request object, or null if none of that type is available

public static T getNativeResponse (PortletResponse response, Class<T> requiredType)

Return an appropriate response object of the specified type, if available, unwrapping the given response as far as necessary.

Parameters
response the portlet response to introspect
requiredType the desired type of response object
Returns
  • the matching response object, or null if none of that type is available

public static Object getOrCreateSessionAttribute (PortletSession session, String name, Class clazz)

Get the specified session attribute under the javax.portlet.PortletSession#PORTLET_SCOPE, creating and setting a new attribute if no existing found. The given class needs to have a public no-arg constructor. Useful for on-demand state objects in a web tier, like shopping carts.

Parameters
session current portlet session
name the name of the session attribute
clazz the class to instantiate for a new attribute
Returns
  • the value of the session attribute, newly created if not found
Throws
IllegalArgumentException if the session attribute could not be instantiated

public static Object getOrCreateSessionAttribute (PortletSession session, String name, Class clazz, int scope)

Get the specified session attribute in the given scope, creating and setting a new attribute if no existing found. The given class needs to have a public no-arg constructor. Useful for on-demand state objects in a web tier, like shopping carts.

Parameters
session current portlet session
name the name of the session attribute
clazz the class to instantiate for a new attribute
scope the session scope of this attribute
Returns
  • the value of the session attribute, newly created if not found
Throws
IllegalArgumentException if the session attribute could not be instantiated

public static Map<StringObject> getParametersStartingWith (PortletRequest request, String prefix)

Return a map containing all parameters with the given prefix. Maps single values to String and multiple values to String array.

For example, with a prefix of "spring_", "spring_param1" and "spring_param2" result in a Map with "param1" and "param2" as keys.

Similar to portlet javax.portlet.PortletRequest#getParameterMap(), but more flexible.

Parameters
request portlet request in which to look for parameters
prefix the beginning of parameter names (if this is null or the empty string, all parameters will match)
Returns
  • map containing request parameters without the prefix, containing either a String or a String array as values
See Also
  • javax.portlet.PortletRequest#getParameterNames
  • javax.portlet.PortletRequest#getParameterValues
  • javax.portlet.PortletRequest#getParameterMap

public static String getRealPath (PortletContext portletContext, String path)

Return the real path of the given path within the web application, as provided by the portlet container.

Prepends a slash if the path does not already start with a slash, and throws a java.io.FileNotFoundException if the path cannot be resolved to a resource (in contrast to javax.portlet.PortletContext#getRealPath PortletContext's getRealPath, which simply returns null).

Parameters
portletContext the portlet context of the web application
path the relative path within the web application
Returns
  • the corresponding real path
Throws
FileNotFoundException if the path cannot be resolved to a resource
See Also
  • javax.portlet.PortletContext#getRealPath

public static Object getRequiredSessionAttribute (PortletRequest request, String name)

Check the given request for a session attribute of the given name under the javax.portlet.PortletSession#PORTLET_SCOPE. Throws an exception if there is no session or if the session has no such attribute in that scope.

Does not create a new session if none has existed before!

Parameters
request current portlet request
name the name of the session attribute
Returns
  • the value of the session attribute
Throws
IllegalStateException if the session attribute could not be found

public static Object getRequiredSessionAttribute (PortletRequest request, String name, int scope)

Check the given request for a session attribute of the given name in the given scope. Throws an exception if there is no session or if the session has no such attribute in that scope.

Does not create a new session if none has existed before!

Parameters
request current portlet request
name the name of the session attribute
scope session scope of this attribute
Returns
  • the value of the session attribute
Throws
IllegalStateException if the session attribute could not be found

public static Object getSessionAttribute (PortletRequest request, String name)

Check the given request for a session attribute of the given name under the javax.portlet.PortletSession#PORTLET_SCOPE. Returns null if there is no session or if the session has no such attribute in that scope. Does not create a new session if none has existed before!

Parameters
request current portlet request
name the name of the session attribute
Returns
  • the value of the session attribute, or null if not found

public static Object getSessionAttribute (PortletRequest request, String name, int scope)

Check the given request for a session attribute of the given name in the given scope. Returns null if there is no session or if the session has no such attribute in that scope. Does not create a new session if none has existed before!

Parameters
request current portlet request
name the name of the session attribute
scope session scope of this attribute
Returns
  • the value of the session attribute, or null if not found

public static Object getSessionMutex (PortletSession session)

Return the best available mutex for the given session: that is, an object to synchronize on for the given session.

Returns the session mutex attribute if available; usually, this means that the HttpSessionMutexListener needs to be defined in web.xml. Falls back to the javax.portlet.PortletSession itself if no mutex attribute found.

The session mutex is guaranteed to be the same object during the entire lifetime of the session, available under the key defined by the SESSION_MUTEX_ATTRIBUTE constant. It serves as a safe reference to synchronize on for locking on the current session.

In many cases, the javax.portlet.PortletSession reference itself is a safe mutex as well, since it will always be the same object reference for the same active logical session. However, this is not guaranteed across different servlet containers; the only 100% safe way is a session mutex.

Parameters
session the HttpSession to find a mutex for
Returns
  • the mutex object (never null)

public static String getSubmitParameter (PortletRequest request, String name)

Return the full name of a specific input type="submit" parameter if it was sent in the request, either via a button (directly with name) or via an image (name + ".x" or name + ".y").

Parameters
request current portlet request
name name of the parameter
Returns
  • the actual parameter name with suffix if needed - null if not present

public static int getTargetPage (PortletRequest request, String paramPrefix, int currentPage)

Return the target page specified in the request.

Parameters
request current portlet request
paramPrefix the parameter prefix to check for (e.g. "_target" for parameters like "_target1" or "_target2")
currentPage the current page, to be returned as fallback if no target page specified
Returns
  • the page specified in the request, or current page if not found

public static File getTempDir (PortletContext portletContext)

Return the temporary directory for the current web application, as provided by the portlet container.

Parameters
portletContext the portlet context of the web application
Returns
  • the File representing the temporary directory

public static boolean hasSubmitParameter (PortletRequest request, String name)

Check if a specific input type="submit" parameter was sent in the request, either via a button (directly with name) or via an image (name + ".x" or name + ".y").

Parameters
request current portlet request
name name of the parameter
Returns
  • if the parameter was sent

public static void passAllParametersToRenderPhase (ActionRequest request, ActionResponse response)

Pass all the action request parameters to the render phase by putting them into the action response object. This may not be called when the action will call javax.portlet.ActionResponse#sendRedirect sendRedirect.

Parameters
request the current action request
response the current action response
See Also
  • javax.portlet.ActionResponse#setRenderParameter

public static void serveResource (ResourceRequest request, ResourceResponse response, PortletContext context)

Serve the resource as specified in the given request to the given response, using the PortletContext's request dispatcher.

This is roughly equivalent to Portlet 2.0 GenericPortlet.

Parameters
request the current resource request
response the current resource response
context the current Portlet's PortletContext
Throws
propagated from Portlet API's forward method
IOException propagated from Portlet API's forward method
PortletException

public static void setSessionAttribute (PortletRequest request, String name, Object value, int scope)

Set the session attribute with the given name to the given value in the given scope. Removes the session attribute if value is null, if a session existed at all. Does not create a new session if not necessary!

Parameters
request current portlet request
name the name of the session attribute
value the value of the session attribute
scope session scope of this attribute

public static void setSessionAttribute (PortletRequest request, String name, Object value)

Set the session attribute with the given name to the given value under the javax.portlet.PortletSession#PORTLET_SCOPE. Removes the session attribute if value is null, if a session existed at all. Does not create a new session if not necessary!

Parameters
request current portlet request
name the name of the session attribute
value the value of the session attribute