欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

struts2 18拦截器详解(十三)

程序员文章站 2022-05-06 22:38:47
multiselectinterceptor      该拦截器处理defaultstack第十二的位置,是用于处理select标签没有一个option被选中的情况,这...
multiselectinterceptor

 

   该拦截器处理defaultstack第十二的位置,是用于处理select标签没有一个option被选中的情况,这个拦截器的逻辑与checkboxintercept拦截器非常类似,几乎是一模一样的。当一个select标签(multiple="multiple")没有一个option被选中的时候就相当于没有这个select标签,这就出现了与checkbox类似的情况。因为该拦截器与checkboxinterceptor拦截器几乎是一样的,所以这里简单讲一下:

[java]  

public string intercept(actioninvocation actioninvocation) throws exception {  

    map parameters = actioninvocation.getinvocationcontext().getparameters();//获取请求参数map  

    map<string, object> newparams = new hashmap<string, object>();  

    set<string> keys = parameters.keyset();//请求参数key集合  

    for (iterator<string> iterator = keys.iterator(); iterator.hasnext();) {  

        string key = iterator.next();  

        if (key.startswith("__multiselect_")) {//判断key是否以__multiselect_开关  

            string name = key.substring("__multiselect_".length());  

            //从请求参数map中移出当前参数  

            iterator.remove();  

            //如果没有选中的option  

            if (!parameters.containskey(name)) {  

                //添加一个长度为0的string[]到newparams中  

                newparams.put(name, new string[0]);  

            }  

        }  

    }  

    //把newparams添加到请求参数map中  

    parameters.putall(newparams);  

    //调用下一个拦截器  

    return actioninvocation.invoke();  

<span style="font-size:14px">}</span>