Making a request parameter binding case insensitive

后端 未结 3 2089
南方客
南方客 2020-12-25 08:21

I have a requirement where I have to make requestParams to bind properly even if the cases of the param name changes. Note:I am using spring 3.2

For eg: http:/

3条回答
  •  情深已故
    2020-12-25 08:52

    You could write a servlet filter that does this. But it does need some coding work.

    Here is the link to the code - http://www.acooke.org/cute/Forcinglow0.html

    Something like this - in this servlet filter convert parameters to lower case

    public final class LowerCaseParametersFilter implements Filter {
     @Override
    public void doFilter(final ServletRequest request,
                         final ServletResponse response,
                         final FilterChain chain)
            throws IOException, ServletException {
        if (request instanceof HttpServletRequest) {
            LOG.debug("Wrapping request");
            chain.doFilter(new LowerCaseRequest((HttpServletRequest) request),
                           response);
        } else {
            LOG.warn(format("Not wrapping request: %s", request.getClass()));
            chain.doFilter(request, response);
        }
    }
    }
    

    Here is the xml config - u wuld need

     
     
    

    I did some research and found this Case-insensitive query string request paramters

       public class HttpCustomParamFilter implements Filter
      {
    
       private static class HttpServletRequestCustomeWrapper extends HttpServletRequestWrapper
       {
           private String[] parameterValues;
    
        @Override
        public String[] getParameterValues(String name)
        {
            Map localParameterMap = super.getParameterMap();
    
            // Handle case insensitivity of http request paramters like start, count, query, sort, filter etc.
            if (localParameterMap != null && !localParameterMap.isEmpty())
            {
                parameterValues = new String[localParameterMap.size()];
                for (String key : localParameterMap.keySet())
                {
                    if (name.equalsIgnoreCase(key))
                        parameterValues = localParameterMap.get(key);
                    else
                        parameterValues = null;
                }
            }
            return parameterValues;
        }
    

提交回复
热议问题