У меня есть фильтр, который принимает входящий запрос, а затем оборачивает его HttpServletRequestWrapper, который, в свою очередь, содержит метод setParameter (). Однако теперь это не будет работать в любых отфильтрованных сервлетах:
<jsp:include page="testing-include.jsp">
<jsp:param name="testing" value="testing" />
</jsp:include>
Страница включения не будет принимать параметр запроса. Если я удаляю фильтр и исходный неизмененный запрос отправляется (разворачивается) сервлету, то он снова работает. Вот моя обертка:
public class HttpServletModifiedRequestWrapper extends HttpServletRequestWrapper {
Map parameters;
@SuppressWarnings("unchecked")
public HttpServletModifiedRequestWrapper(HttpServletRequest httpServletRequest) {
super(httpServletRequest);
parameters = new HashMap(httpServletRequest.getParameterMap());
}
public String getParameter(String name) {
String returnValue = null;
String[] paramArray = getParameterValues(name);
if (paramArray != null && paramArray.length > 0){
returnValue = paramArray[0];
}
return returnValue;
}
@SuppressWarnings("unchecked")
public Map getParameterMap() {
return Collections.unmodifiableMap(parameters);
}
@SuppressWarnings("unchecked")
public Enumeration getParameterNames() {
return Collections.enumeration(parameters.keySet());
}
public String[] getParameterValues(String name) {
String[] result = null;
String[] temp = (String[]) parameters.get(name);
if (temp != null){
result = new String[temp.length];
System.arraycopy(temp, 0, result, 0, temp.length);
}
return result;
}
public void setParameter(String name, String value){
String[] oneParam = {value};
setParameter(name, oneParam);
}
@SuppressWarnings("unchecked")
public void setParameter(String name, String[] values){
parameters.put(name, values);
}
}
Мне действительно трудно определить, что может происходить, не глядя на исходный код реализации Tomcat для стандартных действий jsp: include и jsp: param, но там должен быть какой-то конфликт. Любая помощь будет оценена.