Save This Page
Home » struts-2.0.11.2-src » org.apache » struts2 » interceptor » [javadoc | source]
    1   /*
    2    * $Id: CheckboxInterceptor.java 478625 2006-11-23 17:31:52Z wsmoak $
    3    *
    4    * Licensed to the Apache Software Foundation (ASF) under one
    5    * or more contributor license agreements.  See the NOTICE file
    6    * distributed with this work for additional information
    7    * regarding copyright ownership.  The ASF licenses this file
    8    * to you under the Apache License, Version 2.0 (the
    9    * "License"); you may not use this file except in compliance
   10    * with the License.  You may obtain a copy of the License at
   11    *
   12    *  http://www.apache.org/licenses/LICENSE-2.0
   13    *
   14    * Unless required by applicable law or agreed to in writing,
   15    * software distributed under the License is distributed on an
   16    * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
   17    * KIND, either express or implied.  See the License for the
   18    * specific language governing permissions and limitations
   19    * under the License.
   20    */
   21   package org.apache.struts2.interceptor;
   22   
   23   import com.opensymphony.xwork2.ActionInvocation;
   24   import com.opensymphony.xwork2.interceptor.Interceptor;
   25   
   26   import java.util.Map;
   27   import java.util.Set;
   28   import java.util.HashMap;
   29   import java.util.Iterator;
   30   
   31   /**
   32    * <!-- START SNIPPET: description -->
   33    * Looks for a hidden identification field that specifies the original value of the checkbox.
   34    * If the checkbox isn't submitted, insert it into the parameters as if it was with the value
   35    * of 'false'.
   36    * <!-- END SNIPPET: description -->
   37    * <p/>
   38    * <!-- START SNIPPET: parameters -->
   39    * <ul><li>setUncheckedValue -
   40    * The default value of an unchecked box can be overridden by setting the 'uncheckedValue' property.
   41    * </li></ul>
   42    * <!-- END SNIPPET: parameters -->
   43    * <p/>
   44    * <!-- START SNIPPET: extending -->
   45    * <p/>
   46    * <!-- END SNIPPET: extending -->
   47    */
   48   public class CheckboxInterceptor implements Interceptor {
   49   
   50       /** Auto-generated serialization id */
   51       private static final long serialVersionUID = -586878104807229585L;
   52   
   53       private String uncheckedValue = Boolean.FALSE.toString();
   54   
   55       public void destroy() {
   56       }
   57   
   58       public void init() {
   59       }
   60   
   61       public String intercept(ActionInvocation ai) throws Exception {
   62           Map parameters = ai.getInvocationContext().getParameters();
   63           Map<String, String> newParams = new HashMap<String, String>();
   64           Set<String> keys = parameters.keySet();
   65           for (Iterator<String> iterator = keys.iterator(); iterator.hasNext();) {
   66               String key = iterator.next();
   67   
   68               if (key.startsWith("__checkbox_")) {
   69                   String name = key.substring("__checkbox_".length());
   70   
   71                   iterator.remove();
   72   
   73                   // is this checkbox checked/submitted?
   74                   if (!parameters.containsKey(name)) {
   75                       // if not, let's be sure to default the value to false
   76                       newParams.put(name, uncheckedValue);
   77                   }
   78               }
   79           }
   80   
   81           parameters.putAll(newParams);
   82   
   83           return ai.invoke();
   84       }
   85   
   86       /**
   87        * Overrides the default value for an unchecked checkbox
   88        *
   89        * @param uncheckedValue The uncheckedValue to set
   90        */
   91       public void setUncheckedValue(String uncheckedValue) {
   92           this.uncheckedValue = uncheckedValue;
   93       }
   94   }

Save This Page
Home » struts-2.0.11.2-src » org.apache » struts2 » interceptor » [javadoc | source]