url をパラメータとして扱う

例えば、rails で実装されている twitter だと url をこの(↓)様にしたら

https://twitter.com/hoge

hoge さんの twitter を表示する。
SAStruts にも url をパラメータとして扱う方法があって

@Execute(urlPattern = "index/{id}")
public String index() {
    ...
}

とすると、{id} にマッチする url をアクションクラスの id にセットしてくれちゃう。ただここで行き詰まったのが SAStruts

http://localhost:8080/sasutter/hoge

として hoge を id として扱う方法。

http://localhost:8080/sasutter/index/hoge

とすれば、id を取れるんだけど index なんて普通書かないよね。url も綺麗じゃないし、知ってる人じゃないと分からない。これの解決方法がはまった・・・。
rails の method_missing みたいな action_missing を実装してもらうか、RoutingFilter を自分で書き換えたりしないといけないんじゃないかと思いながら、都度 break & ステップ実行でソースを追ってようやく分かった。

@Execute(urlPattern = "{id}")
public String index() {
    ...
}

とすれば良いだけだった。"{id}" だけ orz 。これはハマりポイントだと思う。
取れただけで自分の思うようにアプリを組めるかはまだ分からないけど(^^;


ちょっと横にそれるけど、ほんの 5、6 年前は「JavaVB みたいにステップ実行でデバッグできないから嫌」とよく言われていたけど eclipse の登場により解決された。今は同様のことを rails が言われてるよね。「railsjava みたいにステップ実行できないから嫌」って。直ぐに解決ツールがでてくるんだろうけど。
でも、基本はログを見てデバッグするのが当たり前で、ログを見ずに開発するなんて気が知れないと思ってたりする。
cygwin でログを tail しながら開発してるのは僕だけっぽいけど・・・。