non webwork taglib
Mayaa標準タグで、各部品をコンポーネントとして作っておけば再利用できる。
いやぁ、Mayaaってよくできてるなぁ。
下記のように書いた場合、当然エラーとなります。
コンポーネントに渡したリストにアクセスするキーを渡してるのですが、
どうやってアクセスすればいいんでしょう?
target.mayaa <m:insert path="/component.html" list="list" listKey="id" listValue="name" /> component.mayaa <m:forEach items="${binding.list}" var="item"> <m:write value="${item.binding.listKey}" /> << ここ <m:write value="${item.binding.listValue}" /> << ここ </m:forEach>
追記
<m:forEach items="${binding.list}" var="item"> <m:write value="${Packages.org.apache.commons.beanutils.BeanUtils.getProperty(item,binding.listKey)}" /> <m:write value="${Packages.org.apache.commons.beanutils.BeanUtils.getProperty(item,binding.listValue)}" /> </m:forEach>
で、できました。
でも、値を参照する度に毎回書くのも嫌なので、一時変数に入れたいんだけど、
<m:with> <m:forEach items="${binding.list}" var="item"> <m:exec script="var listKey = Packages.org.apache.commons.beanutils.BeanUtils.getProperty(item,binding.listKey)" /> <m:write value="${listKey}" /> </m:forEach> </m:with>
と書いても変数が見えてない。
うーんどうすればいいんだろ。リファレンスを見るとボディ内であれば使用できるようだけど、withを使用してるからね。
結論
${item[binding.listKey]}
で、できる。