Aipo ですべての Velocity テンプレートに値をセットする方法

Aipo の Velocity テンプレートを編集する際に、Java 側から変数をテンプレート側に受け渡すようにしますが、テンプレートの種類によって、定義する Java ファイルが異なります。

ALBaseAction
ALSecureBaseAction
ALSessionValidator
ALVelocityScreen
ALVelocityPortletControl
ALVelocityPortletSetControl

ざっとこれだけの種類があります。個別に記述することもできますが、すべてのテンプレートに透過的に値をアサインできるメソッドがあります。

ALOrgUtilsHandler

  public Map<String, String> getParameters(String orgId) {
    Map<String, String> hash = new HashMap<String, String>();

    hash.put("theme", getTheme(orgId));
    hash.put("alias", getAlias(orgId));
    hash.put("aliasjp", getAliasjp(orgId));
    hash.put("copyright", getCopyright(orgId));
    hash.put("copyright_short", getCopyrightShort(orgId));
    hash.put("alias_copyright", getAliasCopyright(orgId));
    hash.put("version", getVersion(orgId));
    String url = getExternalResourcesUrl(orgId);
    hash.put("external_resources_url", url);
    hash.put("unlockeddomain_url", getUnlockedDomainBaseUrl(orgId));
    hash.put("context_path", getContextPath(orgId));
    hash.put("isXDomain", String.valueOf(url.startsWith("http")));

    HttpServletRequest request = HttpServletRequestLocator.get();
    String useragent = request.getHeader("User-Agent").trim();
    hash.put("client", ALEipUtils.getClient(useragent));
    hash.put("clientVer", ALEipUtils.getClientVersion(useragent));

    return hash;
  }

この HashMap に値をセットしておけば、どの Velocity テンプレートからも値が取り出せるようになります。