【发布时间】:2018-03-09 23:40:28
【问题描述】:
我最近将我们的应用程序从 Java 1.7 和 Tomcat 7 更改为 Java 1.8 和 Tomcat 8。
我面临的问题是,当一个 servlet 调用另一个时,请求参数现在是 ApplicationHttpRequest 而不是以前的 HttpServletRequest。这应该不是问题,而是相同方法的一些不同行为。
例如 request.getParameter("param1") 如果参数不在请求中,则 HttpServletRequest 将返回 null。
但是对于 ApplicationHttpRequest 它会像这样抛出一个精确的; java.lang.ClassCastException: java.lang.String 无法转换为 [Ljava.lang.String;
如果请求中确实存在参数,则它们的行为相同。
我写了一个实用方法来处理这个问题。但我想知道是否可以进行配置更改以恢复原始 HttpServletRequest?
public static String getRequestParameter(HttpServletRequest request, String key) {
if (request == null || StringUtils.isBlank(key)) return null;
try {
return request.getParameter(key);
} catch (ClassCastException e1) {
}
return null;
}
【问题讨论】:
标签: java servlets java-8 tomcat8