そういう場合はm:execを覚えるとよいです。これを覚えれば、割と自由自在に書けるようになりました。
m:execとは
m:execは、「このタイミングで何か処理をさせることができるタグ」です。
例えば、判定の結果を変数に入れておいて、後続のm:ifで使うなんて時は、
<m:exec script="${var isCancellable = ・・・}" />
<m:with m:id="xxx">
<m:if test="${isCancellable}">
・・・
</m:if>
<m:if test="${!isCancellable}">
・・・
</m:if>
</m:with>みたいな感じで書けます。特にMayaaのm:ifはelseが書けないので、「Aの場合はこう、Aじゃない場合はこう」と書く場合にはm:ifを2つ書かねばなりません。
そのときにAかどうかを判定するのがながーいタイピングになると、それが2つも登場してなんだかイヤになります。
でも事前にm:execを使って短い変数に入れておくと、条件分岐がすっきり書けます。
m:execの処理(script属性)はJavascriptで書きます。
MayaaはサーバーサイドJavascriptで動いていることを考えるとなるほどと思うと思います。
処理順序には注意
ただ、Mayaaは「上から順に処理される、とは限らない」ことを意識しておく必要はあります。
Mayaaの書いた順は関係なくて、htmlテンプレートの外側のタグから処理されるので、Mayaaでm:execを先に書いたからといっても先に処理されるとは限らない、というのを意識して使う必要があります。
多用しすぎるとアレですが
そもそもMayaaタグとStrutsタグがあればほとんどのことはできるので、多用するのはアレだと思います。
多用してアクロバティックなコードになったら元も子もないので、
ここぞというポイントで、可読性をあげるために使う、くらいのスタンスで使うべきだと考えます。