/**
   * Sets action properties based on the interfaces an action implements. Things like application
   * properties, parameters, session attributes, etc are set based on the implementing interface.
   *
   * @param invocation an encapsulation of the action execution state.
   * @throws Exception if an error occurs when setting action properties.
   */
  public String intercept(ActionInvocation invocation) throws Exception {
    final Object action = invocation.getAction();
    final ActionContext context = invocation.getInvocationContext();

    if (action instanceof ServletRequestAware) {
      HttpServletRequest request = (HttpServletRequest) context.get(HTTP_REQUEST);
      ((ServletRequestAware) action).setServletRequest(request);
    }

    if (action instanceof ServletResponseAware) {
      HttpServletResponse response = (HttpServletResponse) context.get(HTTP_RESPONSE);
      ((ServletResponseAware) action).setServletResponse(response);
    }

    if (action instanceof ParameterAware) {
      ((ParameterAware) action).setParameters(context.getParameters());
    }

    if (action instanceof ApplicationAware) {
      ((ApplicationAware) action).setApplication(context.getApplication());
    }

    if (action instanceof SessionAware) {
      ((SessionAware) action).setSession(context.getSession());
    }

    if (action instanceof RequestAware) {
      ((RequestAware) action).setRequest((Map) context.get("request"));
    }

    if (action instanceof PrincipalAware) {
      HttpServletRequest request = (HttpServletRequest) context.get(HTTP_REQUEST);
      if (request != null) {
        // We are in servtlet environment, so principal information resides in HttpServletRequest
        ((PrincipalAware) action).setPrincipalProxy(new ServletPrincipalProxy(request));
      }
    }
    if (action instanceof ServletContextAware) {
      ServletContext servletContext = (ServletContext) context.get(SERVLET_CONTEXT);
      ((ServletContextAware) action).setServletContext(servletContext);
    }
    return invocation.invoke();
  }
Example #2
0
  @Override
  public String execute() throws Exception {
    // TODO Auto-generated method stub
    // 获取作用域中的Map对象

    // ServletActionContext

    ActionContext actionContext = ActionContext.getContext();

    Map<String, Object> sessionMap = actionContext.getSession();

    Map<String, Object> appMap = actionContext.getApplication();

    // 不建议用map对象去获取request作用域的数据
    Map<String, Object> requestMap = (Map<String, Object>) actionContext.get("request");

    sessionMap.put("ses_key", "session中的数据");

    appMap.put("app_key", "application作用域中的数据");

    requestMap.put("req_key", "request作用域中的对象");

    return "scope2";
  }
  public String intercept(ActionInvocation actionInvocation) throws Exception {
    ServletContext context = ServletActionContext.getServletContext();
    ActionContext act = actionInvocation.getInvocationContext();

    Map<String, Object> application = act.getApplication();

    String gingkgoHome = System.getProperty("gingkgo.home");
    if (null == gingkgoHome) System.setProperty("gingkgo.home", context.getRealPath(""));

    // 设置系统模块
    if (null == application.get(EbizCommon.EBIZ_APP_MODULES)) {
      List<Module> modules = moduleService.roGetModuleList(true);
      Set<String> ms = new HashSet<String>(0);
      for (Module module : modules) {
        ms.add(module.getModuleName());
      }
      application.put(EbizCommon.EBIZ_APP_MODULES, ms);
    }

    // 设置产品组成
    if (null == application.get(EbizCommon.EBIZ_APP_PACKAGE_ITEM)) {
      List<ProductItem> items = productService.getProductItems(ProductType.Package);
      application.put(EbizCommon.EBIZ_APP_PACKAGE_ITEM, items);
    }

    // 主菜单
    if (null == application.get(EbizCommon.EBIZ_APP_MAIN_MENU)) {
      List<MenuItem> items = new ArrayList<MenuItem>();
      items.add(new MenuItem("Desktop", "桌面", "", "ROLE_USER"));
      items.add(new MenuItem("Products", "产品资源", "", "ROLE_PRODUCT"));
      items.add(new MenuItem("Order", "订单管理", "", "ROLE_SALES"));
      items.add(new MenuItem("Operate", "计调操作", "", "ROLE_OPERATOR"));
      items.add(new MenuItem("Express", "配送管理", "", "ROLE_TRANSPORT"));
      items.add(new MenuItem("CRM", "客户管理", "", "ROLE_AGENT_MANAGER"));
      items.add(new MenuItem("Finance", "财务结算", "", "ROLE_FINANCE"));
      items.add(new MenuItem("Stat", "统计分析", "", "ROLE_SUPERUSER"));
      items.add(new MenuItem("System", "系统设置", "", "ROLE_SUPERUSER"));
      items.add(new MenuItem("Config", "设置", "", "ROLE_SUPERUSER"));
      items.add(new MenuItem("Company", "公司设置", "", "ROLE_SUPERUSER"));
      for (MenuItem menuItem : items) {
        List<Shortcut> cuts = shortcutManager.getShortcutByModule(menuItem.getItemName());
        for (Shortcut shortcut : cuts) {
          menuItem
              .getChild()
              .add(
                  new MenuItem(
                      shortcut.getModuleName(),
                      shortcut.getDisplayName(),
                      shortcut.getRelativePath(),
                      shortcut.getRoles()));
        }
      }
      application.put(EbizCommon.EBIZ_APP_MAIN_MENU, items);
    }

    // 设置产品组成
    if (null == application.get(EbizCommon.EBIZ_SYS_CONFIG)) {
      List<SysConfig> items = configService.getAllConfig();
      for (SysConfig config : items) {
        application.put(config.getName(), config.getValue());
      }
      application.put(EbizCommon.EBIZ_SYS_CONFIG, "OK");
    }

    // XML设置参数
    if (null == application.get(EbizCommon.EBIZ_RES_CONFIG)) {
      try {
        application.put(
            EbizCommon.EBIZ_RES_CONFIG, XMLUtility.getInstance(context.getRealPath(XML_PATH)));
      } catch (ParserConfigurationException pce) {
        logger.error("", pce);
      } catch (IOException ioe) {
        logger.error("", ioe);
      } catch (SAXException saxe) {
        logger.error("", saxe);
      } catch (Exception e) {
        logger.error("", e);
      }
    }

    ActionContext.getContext().getValueStack().push(this);

    return actionInvocation.invoke();
  }