struts2 18拦截器详解(十三) --- MultiselectInterceptor

MultiselectInterceptor

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

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>

这时就不作过多的解释了,如果有什么看不懂的可以参数上一个CheckboxIntercepter拦截器

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值