由于项目之前使用的是struts2.3.35的版本,后来因为被扫出了漏洞需要升级到2.5.20。升级过程多做介绍,网上有很多相关的文章。
1.升级之后原本项目中的自定义参数拦截器不能使用了。后经过一系列排查发现由于升级之后参数拦截器的写法发生了改变。
在原本项目中自定义参数拦截器继承ParametersInterceptor 实现setParameters
protected void setParameters(Object action, ValueStack stack, final Map parameters){
......
}
也许应该是我编译器出了问题,在stuts2的包升级时候竟然没有提示错误。于是自己重新编写一个类继承ParametersInterceptor
并实现setParameters方法,发现实现方法有所改变。于是修改代码如下,最终成功进去该拦截器
protected void setParameters(Object action, ValueStack stack, HttpParameters parameters) {
super.setParameters(action, stack, parameters);
setParameters(action, stack, parameters.toMap());
}
//原本拦截器方法
protected void setParameters(Object action, ValueStack stack, final Map parameters) {
......
}