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$ $Date$
    Author:
    Nathan Bubna
    • Constructor Detail

      • ParameterTool

        public ParameterTool()
        Constructs a new instance
      • ParameterTool

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

      • 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​(javax.servlet.ServletRequest request)
        Sets the current ServletRequest
        Parameters:
        request - the ServletRequest to be parsed
      • getRequest

        protected javax.servlet.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.