例えば、VisualforceのIFのtrue/false時に表示させる結果値の中に
javaScriptの記載があって、 ' や " が入っている場合どうしようか、という話。
Javaとかだと、 AA'BB'C を文字列で表現しようと思ったら
String aabbc = "AA\'BB\'C";
の様に、\でエスケープすると思う。
Visualforceだと、上記のエスケープだと文法的には通るけど、表示が
AA\'BB\'C
とかなって\が残ってしまう。
今回やりたいのは、主にjavaScript記述で文字列を扱う場合なので例えば
onclick="location.href='TestVisualforce';"
をIF分の中に入れたい。
さてさて、色々試してみたのだけど、うまくいかないので、変数で持たせることにした。
<apex:variable var="locationTestVar" value="location.href='TestVisualforce'" />
んで、IF条件でボタンのリンク先を設定した。
<input type="button"
value="{!IF(NOT(row.flg),'OK','NG')}"
onclick="{!IF(NOT(row.flg), locationTestVar,'')}"
class="{!IF(NOT(row.flg),'','btnDisabled')}" />
これで、row.flgがTrueの時は活性OKボタンでクリックで遷移
row.flgがFalseであれば、非活性NGボタンでクリック無視
になる。
エスケープに拘っていたら徹夜コースだったかもしれぬ!
柔軟に生きて行こうと思った。