NutzCN Logo
问答 nutz拦截器修改参数的问题
发布于 3024天前 作者 soybottle 2439 次浏览 复制 上一个帖子 下一个帖子
标签:

我这边的需求:做一个全局的拦截器,拦截请求中的参数,将其中的半角字符修改成全角字符,然后再将修改后的参数继续往下传
然后我的做法是:主模块中声明了一个filter,

@Filters(@By(type=XssFilter.class))
public class MainModule {

}

问题是:filter中怎么把怎么修改参数,并往下传

8 回复

public class XssFilter implements ActionFilter
还有我的filter是实现这个接口

如果是修改入口方法的参数(一般也是), 用ActionFilter是做不了的, 要用Processor

http://nutzbook.wendal.net/dev_prepare/action_chain.html

在MethodInvokeProcessor之前插入一个自定义的Processor, 里面能拿到入口方法的参数,然后就修改就是了.

如果硬要在ActionFilter, 考虑到HttpServletRequest类并没有提供修改表单参数的API, 那就只能用HttpServletRequestWrapper包裹一下, 替换原本的req了

@wendal

public class XssFilter implements ActionFilter{

	@Override
	public View match(ActionContext actionContext) {
		actionContext.setRequest(new XssHttpServletRequestWrapper(actionContext.getRequest()));
		return null;
	}

}

请问一下 这种做法可以吗

@qq_db4b5ef7 可以

@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

添加回复
请先登陆
回到顶部