重写getParameterMap后,报错 ,

想做个参数过滤功能,如何修改,或者其他实现方式

image.png

ServletExcludeHadler类

image.png

在HttpServletRequestWrapper类里重写了getParameterMap

image.png

现在报错

 java.lang.ClassCastException: org.apache.catalina.util.ParameterMap cannot be cast to java.util.HashMap

        at com.common.handler.HttpServletRequestWrapper.getParameterMap(HttpServletRequestWrapper.java:38)

        at com.jfinal.core.Injector.injectModel(Injector.java:102)

        at com.jfinal.core.Injector.injectModel(Injector.java:44)

        at com.jfinal.core.Controller.getModel(Controller.java:691)


评论区

JFinal

2018-09-06 16:34

这个没有什么技巧的,把类型搞对就可以了,java 是强类型的,类型容不得乱来

jfinal 的 com.jfinal.core 包下面有类似的代码,大概在里头的 Injector 和 Converter 中

JFinal

2018-09-06 16:34

其实异常已经说得极其清楚了:
java.lang.ClassCastException: org.apache.catalina.util.ParameterMap cannot be cast to java.util.HashMap

山东小木

2019-08-06 18:20

最后怎么解决的呢?

任小伊roy

2019-10-16 14:47

@JFinal 具体怎么解决,在线等

JFinal

2019-10-16 14:59

@任小伊roy 类型不对而已,单步调试了解一下具体类型,然后合理地使用对象类型来转换

如果还是解决不了,大不了将其中的数据读出来再放到新的 HashMap 中:
Map ret = new HashMap();
for (Iterator it=super.getParameterMap().entrySet().iterator(); it.hasNext();) {
Entry e = it.next();
ret.put(e.getKey(), e.getValue();
}