SAStrutsとmayaaを連携2

チュートリアルmayaa化がネストした更新可能な繰り返しまで進んだ。
mayaaもほぼ初みたいな感じの割には順調なんじゃないでしょうか。
ただ、strutsなんだからjspでいいじゃんというのが時々頭をよぎるが・・・
mayaaの勉強だと割り切ってみるとなかなか面白い。

JSPタグで置換できるのはとっても便利。

なんだけど、
m:forEachをc:forEach
に置き換えがうまくいかない。
tdとかが無視られちゃったりでうまくいかず、m:forEachのままで実装中。
時間があったらのTODO

<span m:id="loop">
<tr>
<td><input type="text" m:id="inputText" value="1"/></td>
</tr>
</span>

みたいないのを

<c:forEach m:id="loop">
<html:input m:id="inputText">
</c:forEach>

みたいな感じで出来るとほぼJSPといった感じなんだけど・・・
tdとかが消えちゃうんだよねぇ
一応tdとかにもidうって、やっていけばいけるんだろうけど・・・


というか、二重ループとかも、m:forEachとかを「並べる」し・・・
まさか、c:forEachの子要素として書いちゃ駄目とか?(明日確認してみるかな。。。今日はもう無理・・・)

追記・・・

並べたらいけた

<span m:id="loopRow">
<tr>
<td><input type="text" m:id="inputId" name="id" value="0"/></td>
<td><input type="text" m:id="inputName" name="name" value="name0"/></td>
</tr>
</span>
<c:forEach m:id="loopRow" var="mapItems" items="${mapItems}">
</c:forEach>
<html:text m:id="inputId" name="mapItems" property="id" indexed="true"/>
<html:text m:id="inputName" name="mapItems" property="name" indexed="true"/>

こんな感じ
indexedオプションが使えるのは便利だが、直観的ではない。
m:idによって、spanがc:forEachになって、各inputがhtml:textになったJSPをさらに展開といった感じでイメージが出来ればいいが・・・
まぁ使ってもいいが、m:forEachで

<m:forEach m:id="loopRow"
        index="i"
        var="m"
        items="${mapItems}"/>

    <m:echo m:id="inputId">
    	<m:attribute name="name" value="mapItems[${i}].id" />
    	<m:attribute name="value" value="${m.id}" />
    </m:echo>
    <m:echo m:id="inputName">
    	<m:attribute name="name" value="mapItems[${i}].name" />
    	<m:attribute name="value" value="${m.name}" />
    </m:echo>

でもいいなぁ・・・
微妙なところでしょうかね。


ただ、mayaa標準だと、if-elseが使いづらい(厳密には使えない)ので、
c:choose-c:when-c:otherwiseで置き換えられるのは便利ですね。

<m:if test="${ i % 2 == 0}">
  <m:attribute name="style" value="background-color:'pink'" />
</m:if>
<m:if test="${ i % 2 != 0}">
  <m:attribute name="style" value="background-color:'yellow'" />
</m:if>




<c:choose>
  <c:when test="${ i % 2 == 0}">
    <m:attribute name="style" value="background-color:'red'" />
  </c:when>
  <c:otherwise>
    <m:attribute name="style" value="background-color:'blue'" />
  </c:otherwise>
</c:choose>

かみしばいもきっちり。

せっかくのデザインとロジックの分離なのでモックもちゃんと動くようにしようということで
ボタンでの遷移を
・onclick
・せっかく付属してるのでjQueryのclickで(スクリプトタグ)
・いやいやUnobtrusive Javascriptということでさらに分離を。。。


とかいろいろ勉強がてらやってみたり。となかなか時間がかかってしまった。


結局のところ
モックのためだけにスクリプトファイルを置くと、デプロイ時に邪魔だよね。
scriptタグで・・・とも思ったんだけど、htmlを汚しすぎる。
ということで、onclickで書いて、レンダリング時には属性消去かなぁ〜と落ち着いている。