データバインディング式で比較演算子を使う際のバッドノウハウ
Flexにはデータバインディングという便利な機能があるのですが、
今回、とあるボタンの有効/無効の切り替えのために、
<mx:Button label="実行" enabled="{ hogehoge.length < 5 }" />
という比較演算子を使った条件を書くと
Error: The value of attribute "enabled" must not contain the '<' character.
というコンパイルエラーが発生しました。
色々と試してみた結果、コンパイルエラーを回避する方法は以下の2つ。
1. '<'(小なり)ではなく、'>'(大なり)を使う
<mx:Button label="実行" enabled="{ 5 > hogehoge.length }" />
2. '<'を実体参照'&lt;'で書く
<mx:Button label="実行" enabled="{ hogehoge.length < 5 }" />
他にも
論理演算子に使う'&'(アンパサンド)も使えないみたいです。
XML の解析規則により、MXML ファイルのデータバインディング式でアンパサンド文字 & を使用する場合は、16 進数に相当する文字 & に置き換える必要があります。例えば、ActionScript で記述された論理 OR 式で && を使用する場合は、次の例が示すように && のように記述する必要があります。
<mx:Button label="Test" enabled="{authorized && cc}" />データバインディング式でのアンパサンド文字の使用 - Adobe Flex 3 ヘルプ