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>