WORedirect と pageWithName(name)。

 当ページになおざりちっくに設置してございます“掲示板”では、書き込みが正常に終了しましたら一覧のページを表示する様になっています。そしてそのままブラウザのリロードボタンを押しますれば同じ内容が重複して書き込まれがちです(←ブラウザによって挙動が異なる)。これを避けるには他の安全なページのURIへ転送してあげれば良いのですけど、これとて万全ではなくブラウザの“戻る”ボタンを二回ほど押されてしまえば元の木網(←こう書くんだねぇ)です。
 でもまぁ、ないよりは全然ましだと思いますから今回も実装しようとしていたのです。しかしながら、どうにもコード内での WORedirect の扱いが良く分かりませんで、「WebObjects Builder上でExtensionの方の WORedirect をくっ付けてそれを WOConditional で囲んで発動するかどうかを制御する」みたいなやり方をしていました(←近い道があるのは知っているけど、どの道か分からず仕方なく回り道しちゃった感じ)。が、「なんつぅかこう、いけてないじゃん。エレガントさがなさ過ぎ。出すなら一発で」みたいに思いますから、結局その部分は外してしまいまして「さて、どうしたものか」と。

 ちょうどそんな事を思っていた今日、奇しくもAppleさんのWO DevなMLで「セッション切っちゃった後は、pageWithName("WORedirect") で WOComponent 作って返しちゃえばいいべ」と流れてきたのでした。そして、

 context().directActionURLForActionNamed(actionName, queryDict)

 でさくっとDirectAction用のURIが取れたのですね、しかもQueryString付きの。今後は

 WOComponent aPage = pageWithName("WORedirect");
 aPage.takeValueForKey(context().directActionURLForActionNamed("xxx", aDict), "url");

 みたいな感じで返そうと思います。

 自前のコンポーネントも WOComponent を継承したクラス、WORedirect も WOComponent を継承したクラス。そりゃそうだと思いつつ、まったく思い及びませんでしたです……。ダメっす、ゆる過ぎっす。