Class ParameterTool

All Implemented Interfaces:
Map<String,Object>
Direct Known Subclasses:
ParameterParser

@DefaultKey("params") @ValidScope("request") public class ParameterTool extends ValueParser

Utility class for easy parsing of ServletRequest parameters.

 Template example(s):
   $params.foo                ->  bar
   $params.getNumber('baz')   ->  12.6
   $params.getInt('baz')      ->  12
   $params.getNumbers('baz')  ->  [12.6]

 Toolbox configuration:
 <tools>
   <toolbox scope="request">
     <tool class="org.apache.velocity.tools.view.ParameterTool"/>
   </toolbox>
 </tools>
 

When used as a view tool, this should only be used in the request scope. This class is, however, quite useful in your application's controller, filter, or action code as well as in templates.

Since:
VelocityTools 2.0
Version:
$Revision: 749733 $ $Date: 2009-03-03 12:24:17 -0800 (Tue, 03 Mar 2009) $
Author:
Nathan Bubna
  • Field Details

    • request

      private ServletRequest request
  • Constructor Details

    • ParameterTool

      public ParameterTool()
      Constructs a new instance
    • ParameterTool

      public ParameterTool(ServletRequest request)
      Constructs a new instance using the specified request.
      Parameters:
      request - the ServletRequest to be parsed
  • Method Details

    • configure

      protected void configure(ValueParser values)
      Description copied from class: ValueParser
      Does the actual configuration. This is protected, so subclasses may share the same ValueParser and call configure at any time, while preventing templates from doing so when configure(Map) is locked.
      Overrides:
      configure in class ValueParser
    • setRequest

      public void setRequest(ServletRequest request)
      Sets the current ServletRequest
      Parameters:
      request - the ServletRequest to be parsed
    • getRequest

      protected ServletRequest getRequest()
      Returns the current ServletRequest for this instance.
      Returns:
      the current ServletRequest
      Throws:
      UnsupportedOperationException - if the request is null
    • getValue

      public Object getValue(String key)
      Overrides ValueParser.getValue(String key) to retrieve the value from the ServletRequest instead of an arbitrary Map.
      Overrides:
      getValue in class ValueParser
      Parameters:
      key - the parameter's key
      Returns:
      parameter matching the specified key or null if there is no matching parameter
    • getValues

      public Object[] getValues(String key)
      Overrides ValueParser.getValues(String key) to retrieve Strings from the ServletRequest instead of an arbitrary Map.
      Overrides:
      getValues in class ValueParser
      Parameters:
      key - the key for the desired parameter
      Returns:
      an array of String objects containing all of the values the given request parameter has, or null if the parameter does not exist
    • setSource

      protected void setSource(Map source)
      Overrides ValueParser.setSource(Map source) to throw an UnsupportedOperationException, because this class uses a servlet request as its source, not a Map.
      Overrides:
      setSource in class ValueParser
    • getSource

      protected Map getSource()
      Overrides ValueParser.getSource() to return the result of getRequest().getParameterMap() and expand singleton arrays within it first.
      Overrides:
      getSource in class ValueParser
    • getAll

      public Map getAll()
      Returns the map of all parameters available for the current request.
    • isSingletonArray

      private boolean isSingletonArray(Object value)
    • expandSingletonArrays

      private Map<String,Object> expandSingletonArrays(Map<String,String[]> original)