Java tutorial
/** * Copyright (c) 2005-2012 https://github.com/zhangkaitao * * Licensed under the Apache License, Version 2.0 (the "License"); */ package cn.guoyukun.spring.jpa.web.bind.method.annotation; import org.springframework.web.context.request.NativeWebRequest; import org.springframework.web.context.request.RequestAttributes; import org.springframework.web.method.support.HandlerMethodArgumentResolver; import org.springframework.web.servlet.HandlerMapping; import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.Map; /** * <p>User: * <p>Date: 13-1-23 ?3:28 * <p>Version: 1.0 */ public abstract class BaseMethodArgumentResolver implements HandlerMethodArgumentResolver { /** * ???uri varaibles parameters * * @param namePrefix * @param request * @return * @subPrefix ??namePrefix? */ protected Map<String, String[]> getPrefixParameterMap(String namePrefix, NativeWebRequest request, boolean subPrefix) { Map<String, String[]> result = new HashMap<String, String[]>(); Map<String, String> variables = getUriTemplateVariables(request); int namePrefixLength = namePrefix.length(); for (String name : variables.keySet()) { if (name.startsWith(namePrefix)) { //page.pn ? pn if (subPrefix) { char ch = name.charAt(namePrefix.length()); //? . _ ?? ?? if (illegalChar(ch)) { continue; } result.put(name.substring(namePrefixLength + 1), new String[] { variables.get(name) }); } else { result.put(name, new String[] { variables.get(name) }); } } } Iterator<String> parameterNames = request.getParameterNames(); while (parameterNames.hasNext()) { String name = parameterNames.next(); if (name.startsWith(namePrefix)) { //page.pn ? pn if (subPrefix) { char ch = name.charAt(namePrefix.length()); //? . _ ?? ?? if (illegalChar(ch)) { continue; } result.put(name.substring(namePrefixLength + 1), request.getParameterValues(name)); } else { result.put(name, request.getParameterValues(name)); } } } return result; } private boolean illegalChar(char ch) { return ch != '.' && ch != '_' && !(ch >= '0' && ch <= '9'); } @SuppressWarnings("unchecked") protected final Map<String, String> getUriTemplateVariables(NativeWebRequest request) { Map<String, String> variables = (Map<String, String>) request .getAttribute(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE, RequestAttributes.SCOPE_REQUEST); return (variables != null) ? variables : Collections.<String, String>emptyMap(); } }