Notes の全文検索の結果をJSONとして取り出す

Domino の Web 化とか スマートフォン対応とかで、なるべくページ遷移を発生させずにシングルページの中でごねごねとデータをいじくり回したいことも多くあるでしょう。Domino のビューをうまいこと加工して JSON を吐くという手法を使うと、簡単にデータを取ってきてそれを使うことができます。

といってもビューだとどうしても Content-Type が text/html にしかならないので、フォームを通します。

$$ViewTemplate for ビュー名 といったようなフォームを作り、ビューを埋め込んで使います。ビューはHTMLと設定し、フォームもHTMLとしてタイプを application/json文字コードUTF-8 としておけば、キレイな JSON を吐くことができます。ビュー上で表現できるデータであればこの方法で簡単に取り出すことができます。

となると使いたくなるのはコレ、ビュー上で全文検索した結果一覧をJSONで取り出したくなります。全文検索の結果も同じ方法で取り出すことができるのか?これができません。

$$SearchTemplate for ビュー名 といったフォームで行けるかと思いきや、検索結果の表示に使うフォームはNotes形式でないといけないのです。Notes形式のフォームは自動的にHTMLに変換され、様々なタグが付与されて text/html で出力されます。HTML形式では全文検索の結果を出せないのです。サーバエラー「HTTP Web Server: 例外 - アプリケーションの例外 - HTML として扱われる文書は編集できません」となってしまいます。さあ困った。何か裏技のようなものはないのか。

と思ってたら素敵なサンプルがありました。まさしく探していた内容です。

Json-search on Domino views | DontPanic - a blog about Lotus Notes / Domino

検索結果一覧のWEBページ内にJSON文字列を出力しておき、元ページ内に隠しのIFRAMEとして呼び出します。IFRAME内に文字列として存在しているJSONのようなものを実際のJSONに変換して取ってくる、という流れです。

文章での説明が難しい。

こういうの XPages なら簡単にできたりするんだろうなあ。