本文共 2451 字,大约阅读时间需要 8 分钟。
首先在拦截器注册文件interceptorContext.xml中声明拦截器:
然后配置struts.xml文件,加入拦截队列
这里注意一下,在拦截器栈中,trimInterceptor的位置要在defaultStack之上,否则不会生效甚至报错/index.jsp?url=${url}
下一步就是实现拦截器代码了
这里在开发中犯了一次二,就是在取参数值的时候,一开始得到value后直接.toString(),然后trim()了,再塞回去,可是报错,参数违法什么的;之后输出了class类型:
System.out.println(value.getClass());输出为:
class [Ljava.lang.String; class [Ljava.lang.String; class [Ljava.lang.String; class [Ljava.lang.String; class [Ljava.lang.String;当时看成了String类型了,一看没错啊,怎么不对呢,找了会问题,才哗然大悟,form里面的参数其实是数组的,相同name提交后得到是参数是数组的数据,而且显示的class显示为String[]的,然后修改输出一看OK了
System.out.println(value.getClass()+"--"+JsonUtil.toJson(value));
class [Ljava.lang.String;--["22222"] class [Ljava.lang.String;--[""] class [Ljava.lang.String;--[""] class [Ljava.lang.String;--["11111"] class [Ljava.lang.String;--["3333"]
package main.com.eca.interceptor; import java.util.Iterator; import java.util.Map; import java.util.Set; import org.apache.commons.lang.StringUtils; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.Interceptor; public class TrimInterceptor implements Interceptor { private static final long serialVersionUID = -2578561479301489061L; public void destroy() { } /* * @Description:拦截所有参数,去掉参数空格 * @see com.opensymphony.xwork2.interceptor.Interceptor#intercept(com.opensymphony.xwork2.ActionInvocation) */ public String intercept(ActionInvocation invocation) throws Exception { Map map=invocation.getInvocationContext().getParameters(); Set keys = map.keySet(); Iterator iters = keys.iterator(); while(iters.hasNext()){ Object key = iters.next(); Object value = map.get(key); map.put(key, transfer((String[])value)); } return invocation.invoke(); } /** * @Description: 遍历参数数组里面的数据,取出空格 * @param params * @return */ private String[] transfer(String[] params){ for(int i=0;i
转载地址:http://oonkl.baihongyu.com/