Created
November 5, 2018 06:02
-
-
Save LuciusChen/0d67c92e0615dc53d39f59d1ced2add3 to your computer and use it in GitHub Desktop.
对 request 重新封装,使得 request 可以从此从 Servlet 中取值。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.util.Collections; | |
import java.util.Enumeration; | |
import java.util.Map; | |
import java.util.TreeMap; | |
import javax.servlet.http.HttpServletRequest; | |
import javax.servlet.http.HttpServletRequestWrapper; | |
public class PrettyFacesWrappedRequest extends HttpServletRequestWrapper | |
{ | |
private final Map<String, String[]> modifiableParameters; | |
private Map<String, String[]> allParameters = null; | |
/** | |
* Create a new request wrapper that will merge additional parameters into | |
* the request object without prematurely reading parameters from the | |
* original request. | |
* | |
* @param request | |
* @param additionalParams | |
*/ | |
public PrettyFacesWrappedRequest(final HttpServletRequest request, | |
final Map<String, String[]> additionalParams) | |
{ | |
super(request); | |
modifiableParameters = new TreeMap<>(); | |
modifiableParameters.putAll(additionalParams); | |
} | |
@Override | |
public String getParameter(final String name) | |
{ | |
String[] strings = getParameterMap().get(name); | |
if (strings != null) | |
{ | |
return strings[0]; | |
} | |
return super.getParameter(name); | |
} | |
@Override | |
public Map<String, String[]> getParameterMap() | |
{ | |
if (allParameters == null) | |
{ | |
allParameters = new TreeMap<>(); | |
allParameters.putAll(super.getParameterMap()); | |
allParameters.putAll(modifiableParameters); | |
} | |
//Return an unmodifiable collection because we need to uphold the interface contract. | |
return Collections.unmodifiableMap(allParameters); | |
} | |
@Override | |
public Enumeration<String> getParameterNames() | |
{ | |
return Collections.enumeration(getParameterMap().keySet()); | |
} | |
@Override | |
public String[] getParameterValues(final String name) | |
{ | |
return getParameterMap().get(name); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment