Result实现类

package org.apache.struts2.dispatcher;

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.Result;
import com.opensymphony.xwork2.util.TextParseUtil;
import com.opensymphony.xwork2.util.TextParseUtil.ParsedValueEvaluator;
import com.opensymphony.xwork2.util.logging.Logger;
import com.opensymphony.xwork2.util.logging.LoggerFactory;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import org.apache.struts2.StrutsStatics;

public abstract class StrutsResultSupport
  implements Result, StrutsStatics
{
  private static final Logger LOG = LoggerFactory.getLogger(StrutsResultSupport.class);
  public static final String DEFAULT_PARAM = "location";
  private boolean parse;
  private boolean encode;
  private String location;
  private String lastFinalLocation;

  public StrutsResultSupport()
  {
    this(null, true, false);
  }

  public StrutsResultSupport(String location) {
    this(location, true, false);
  }

  public StrutsResultSupport(String location, boolean parse, boolean encode) {
    this.location = location;
    this.parse = parse;
    this.encode = encode;
  }

  public void setLocation(String location)
  {
    this.location = location;
  }

  public String getLocation()
  {
    return this.location;
  }

  public String getLastFinalLocation()
  {
    return this.lastFinalLocation;
  }

  public void setParse(boolean parse)
  {
    this.parse = parse;
  }

  public void setEncode(boolean encode)
  {
    this.encode = encode;
  }

  public void execute(ActionInvocation invocation)
    throws Exception
  {
    this.lastFinalLocation = conditionalParse(this.location, invocation);
    doExecute(this.lastFinalLocation, invocation);
  }

  protected String conditionalParse(String param, ActionInvocation invocation)
  {
    if ((this.parse) && (param != null) && (invocation != null)) {
      return TextParseUtil.translateVariables(param, invocation.getStack(), new TextParseUtil.ParsedValueEvaluator()
      {
        public Object evaluate(String parsedValue) {
          if ((StrutsResultSupport.this.encode) && 
            (parsedValue != null))
          {
            try
            {
              return URLEncoder.encode(parsedValue, "UTF-8");
            }
            catch (UnsupportedEncodingException e) {
              if (StrutsResultSupport.LOG.isWarnEnabled()) {
                StrutsResultSupport.LOG.warn("error while trying to encode [" + parsedValue + "]", e, new String[0]);
              }
            }
          }

          return parsedValue;
        }
      });
    }
    return param;
  }

  protected abstract void doExecute(String paramString, ActionInvocation paramActionInvocation)
    throws Exception;
}

**********************************************************

 

posted on 2014-04-28 21:59  锟斤拷锟斤拷  阅读(200)  评论(0编辑  收藏  举报

导航