用户登录
用户注册

分享至

struts2 18拦截器详解(十三)

  • 作者: 咚咚85055973
  • 来源: 51数据库
  • 2021-06-24
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>  

 

软件
前端设计
程序设计
Java相关