Webエンジニア susumuis の技術ブログ

このブログの内容は個人の見解であり、所属する組織の公式見解ではありません

Mayaaで動的なidを作るw

Mayaa的には非推奨のはずで、マニュアルにも全然記載がないのだけど、どうしてもと顧客から要望があったので、次のように実装しました。

テンプレートにこのように書いたとします。

<span m:id="HOGEHOGE_NAME_OF_HOGEHOGE_ID" m:HOGEHOGE_ID="1">dummy</span>

で、実はHOGEHOGE_NAMEは、Map hogehoge に、HOGEHOGE_IDをキーとして与えられているとします。

public static Map<String, String> hogehoge = new HashMap<String, String>();
static {
    hogehoge.put("1", "ほげほげ");
    hogehoge.put("2", "ふがふが");
}

この場合、このようにすれば、m:HOGEHOGE_IDをキーにして「ほげほげ」等を返すidが作成できます。

<m:write m:id="HOGEHOGE_NAME_OF_HOGEHOGE_ID" value="${hogehoge.get(originalNode.getAttribute(
  Packages.org.seasar.mayaa.impl.engine.specification.SpecificationUtil.createQName("HOGEHOGE_ID")
).value)}" />

参考にさせていただいたのは次のML投稿です。
http://ml.seasar.org/archives/mayaa-user/2009-May/000793.html

本当は、Namespaceにmayaaの物を使わず自分でちゃんと定義するべきでしょう。

この使い方はMayaa作者が意図した範囲から外れていると思うので、今後のMayaaバージョンによってはサポートされなくなるリスクは0ではないでしょう。