ParameterUtil.java

import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

import java.util.Vector;
import java.util.Enumeration;

/**
 * Internationalized versions of ServletRequest's parameter methods.
 **/
public class ParameterUtil
{
    /**
     * Internationalized version of ServletRequest.getParameter().  Uses the response
     * object's character encoding to encode the parameter.
     **/
    public static String getParameterWithEncoding(ServletRequest request, ServletResponse response, String key)
    {
        String val = null;
        try
        {
            val = request.getParameter(key);
            if (val == null)
            {
                return val;
            } else
            {
                return new String(val.getBytes("ISO-8859-1"),
                                  response.getCharacterEncoding());
            }
        }
        catch (Exception ex)
        {
            return val;
        }
    }

    /**
     * Internationalized version of ServletRequest.getParameterNames().  Uses the
     * response object's character encoding to encode the parameters.
     **/
    public static Enumeration getParameterNamesWithEncoding(ServletRequest request, ServletResponse response)
    {
        Vector vec = new Vector();
        for( Enumeration values=request.getParameterNames(); values.hasMoreElements(); ) {
            try
            {
                String name = (String)values.nextElement();
                String newName = new String(name.getBytes("ISO-8859-1"),
                                            response.getCharacterEncoding());
                vec.add(newName);
            }
            catch (Exception ex)
            { // ignore Exception
            }
        }
        return vec.elements();
    }    

    /**
     * Internationalized version of ServletRequest.getParameterValues().  Uses the response
     * object's character encoding to encode the parameters.
     **/
    public static String[] getParameterValuesWithEncoding(ServletRequest request, ServletResponse response, String key)
    {
        String[] values = request.getParameterValues(key);
        if (values != null)
        {
            for (int i = 0;i < values.length;i ++)
            {
                try
                {
                    values[i] = new String(values[i].getBytes("ISO-8859-1"),
                                           response.getCharacterEncoding());
                }
                catch (Exception ex)
                { // ignore Exception, values[i] will just be null
                }
            }
        }
        return values;
    }        
}