コード例 #1
0
  private Object injectParam2Map(String startName) throws Exception {
    Map<String, Object> map = new HashMap<String, Object>();
    ReflectUtil ru = new ReflectUtil(map);
    this.injectActionCxt2Pojo(ru);
    // 注入mvc action 请求参数
    ParamUtil.injectParam(this.context, ru, startName);

    return map;
  }
コード例 #2
0
  private Object injectParam2Pojo(Class<?> paramClass, String startName) throws Exception {
    Object paramObj = paramClass.newInstance();
    ReflectUtil ru = new ReflectUtil(paramObj);
    this.injectActionCxt2Pojo(ru);
    // 注入mvc action 请求参数
    ParamUtil.injectParam(this.context, ru, startName);

    return paramObj;
  }
コード例 #3
0
  public boolean findAction() throws Exception {
    // URL参数
    Map<String, List<?>> pathParams = null;
    if (ActionConfigBeanCache.containsKey(this.context.getUri())
        || (pathParams =
                ActionConfigBeanCache.getByMatches(
                    this.context.getUri(), this.context.getHttpMethod()))
            != null) {

      // 处理形如" /xxx/{id}/{name} "的URI
      if (pathParams != null && pathParams.containsKey("mvcBean")) {
        // 根据Url配置的UrlParam获取参数值
        this.context.setActionConfigBean((ActionConfigBean) pathParams.get("mvcBean").get(0));

        this.context.getPathParamMap().putAll(ParamUtil.getPathParamMap(pathParams));
        this.context.getQueryParamMap().putAll(this.context.getPathParamMap());
      } else this.context.setActionConfigBean(ActionConfigBeanCache.get(this.context.getUri()));

      if (this.context.getActionConfigBean() != null) return true;
    }

    return false;
  }
コード例 #4
0
  /**
   * 执行Action
   *
   * @throws Exception
   */
  public void execute() throws Exception {
    // 实例化pojo
    initPojo();

    // IOC注入对象到pojo中
    injectIocBean();

    // 注入框架mvc action 上下文环境
    this.injectActionCxt2Pojo(this.ru);

    if (IAction.class.isAssignableFrom(this.actionObject.getClass())) {
      // struts2风格
      IAction action = (IAction) actionObject;
      action.init(this.context);
      retn = action.execute();
      // 对Action执行返回结果的处理
      this.handleResult();

      return;
    }

    String methodName = this.context.getActionConfigBean().getMethod();
    Method[] methods = ru.getMethods(methodName);
    if (methods == null || methods.length == 0) return;

    method = this.getFirstMethd(methods);
    if (method == null) return;

    // 执行验证器
    this.handleValidator();
    try {
      // upload validation
      this.validateUpload();

      // 注入mvc action 请求参数
      ParamUtil.injectParam(this.context, this.ru, null);

      /* 方法体内的前置拦截器执行  */
      Before before = method.getAnnotation(Before.class);
      if (before != null) {
        InterExecution before_interExe = new InterExecution("before", context);
        before_interExe.execute(before.value());
        if (before_interExe.getError() != null) {
          before_interExe.showErr();
          return;
        }
      }

      // execute the action method
      excuteMethod(methodName);

      /* 方法体内的后置拦截器执行  */
      After after = method.getAnnotation(After.class);
      if (after != null) {
        // 后置拦截器
        InterExecution after_interExe = new InterExecution("after", context);
        after_interExe.execute(after.value());
        if (after_interExe.getError() != null) {
          after_interExe.showErr();
          return;
        }
      }

      /* 外部配置的后置拦截器后执行 */
      InterExecution after_interExe = new InterExecution("after", this.context); // 7.后置拦截器
      if (after_interExe.findAndExecuteInter()) {
        after_interExe.showErr();
        return;
      }

      // 对Action执行返回结果的处理
      this.handleResult();
    } catch (Exception e) {
      throw e;
    }
  }