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ではないでしょう。