VisualforceでcommandButtonにrerender属性を設定して、
oncompleteにコールバック処理を記載したら動作してくれない。
オブジェクトに格納されているデータを画面上に一覧で出していて、一覧に対する更新処理中にローディング画像を表示している機能。
1年近く問題なく稼働していた機能なのだが、突然ローディング画像が消えなくなった。
VisualforceでcommandButtonにrerender属性を設定して、oncompleteにローディング画像消す処理を記載しています。
「なんだ???さっきまで動いてたのに。」
デバッグログを確認したところ特に問題なく、処理は正常に終了し、データも更新されている。
色々調べたところ、ブラウザのコンソールにエラーが出ており、XMLの生成でエラーになっている模様。
うーん。ますますわからん。
更に調査したところある特定のデータが一覧に表示されている場合にエラーが出ることが判明。
そのデータとは「サロゲートペア」文字が含まれているデータ。
知っている方は知っていると思いますが(私は知らなかった)XMLにサロゲートペア文字は使用できません。
ここからは推測ですが、VisualforceはAjaxで通信する際にXMLを使用しています。
ですので、サロゲートペアが中に含まれる場合は通信できません。
なんでjsonじゃないのよ。
あ、ちなみにLightningはjsonらしいですよ。確認してないけど。