我这边的需求:做一个全局的拦截器,拦截请求中的参数,将其中的半角字符修改成全角字符,然后再将修改后的参数继续往下传
然后我的做法是:主模块中声明了一个filter,
@Filters(@By(type=XssFilter.class))
public class MainModule {
}
问题是:filter中怎么把怎么修改参数,并往下传
如果是修改入口方法的参数(一般也是), 用ActionFilter是做不了的, 要用Processor
http://nutzbook.wendal.net/dev_prepare/action_chain.html
在MethodInvokeProcessor之前插入一个自定义的Processor, 里面能拿到入口方法的参数,然后就修改就是了.
如果硬要在ActionFilter, 考虑到HttpServletRequest类并没有提供修改表单参数的API, 那就只能用HttpServletRequestWrapper包裹一下, 替换原本的req了
public class XssFilter implements ActionFilter{
@Override
public View match(ActionContext actionContext) {
actionContext.setRequest(new XssHttpServletRequestWrapper(actionContext.getRequest()));
return null;
}
}
请问一下 这种做法可以吗
@wendal 好的 ,谢谢
public Map<String, Object> index(HttpServletRequest request, @Param("company")String company,
@Param("address")String address, @Param("name")String name){
String a = request.getParameter("company");
我用@param来获取参数,发现参数并没有被过滤,
用request.getParameter()来获取参数,就可以被过滤
HttpServletRequestWrapper我只重写了getParameter()方法,请问下,这种情况我要怎么做?只要重写getParameterMap方法就好了吗
@qq_db4b5ef7 getParamxxxxx均需要覆盖
来自炫酷的 NutzCN
@wendal 好吧 谢谢