package com.vincent.rsf.server.common.interceptor.severlet;
|
|
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequestWrapper;
|
import java.util.*;
|
|
public class ParameterAddableRequest extends HttpServletRequestWrapper {
|
private final Map<String, String[]> additionalParams = new HashMap<>();
|
|
public ParameterAddableRequest(HttpServletRequest request) {
|
super(request);
|
}
|
|
/**
|
* 添加新参数
|
* @param name 参数名
|
* @param value 参数值
|
*/
|
public void addParameter(String name, String value) {
|
additionalParams.put(name, new String[]{value});
|
}
|
|
/**
|
* 添加新参数(多值)
|
* @param name 参数名
|
* @param values 参数值数组
|
*/
|
public void addParameter(String name, String[] values) {
|
additionalParams.put(name, values);
|
}
|
|
@Override
|
public String getParameter(String name) {
|
if (additionalParams.containsKey(name)) {
|
return additionalParams.get(name)[0];
|
}
|
return super.getParameter(name);
|
}
|
|
@Override
|
public Map<String, String[]> getParameterMap() {
|
Map<String, String[]> combinedMap = new HashMap<>(super.getParameterMap());
|
combinedMap.putAll(additionalParams);
|
return Collections.unmodifiableMap(combinedMap);
|
}
|
|
@Override
|
public Enumeration<String> getParameterNames() {
|
Set<String> names = new HashSet<>(Collections.list(super.getParameterNames()));
|
names.addAll(additionalParams.keySet());
|
return Collections.enumeration(names);
|
}
|
|
@Override
|
public String[] getParameterValues(String name) {
|
if (additionalParams.containsKey(name)) {
|
return additionalParams.get(name);
|
}
|
return super.getParameterValues(name);
|
}
|
}
|