Strutsのtaglibはlogic:iterateとbean:writeだけ使えばスパゲッティなJSPにならない気がする。

OpenSSLのコードの汚さに「サルが書いたコードだ」との批判 | スラド

すごい批判だw 実際原文でも以下のように言ってる。--);

I have come to the conclusion that OpenSSL is equivalent to monkeys throwing feces at the wall.
(OpenSSLは壁に糞を投げつけるサルと同じだという結論に達した。)

OpenSSL is written by monkeys

それはおいといて、コメント欄がなかなか面白い。

コメントの1つにStrutsのlogicタグ使いすぎによる最長不倒関数が挙げられている。

確かに僕も以前、スクリプトレットとtaglib使ったJSPに苦闘した経験がある。
さらにもれなくJavaScriptもついてくる。--);

最初に作った段階では見通せる状況でも、エンハンスが続いて画面が複雑になってくると手に負えなくなってくるよね。

とくにlogicタグはlogic:iterateでのループはしょうがないとしても、logic:equalとかlogic:emptyで条件分岐しているとスクリプトレットとほとんど変わらない状況になってくる。

JSPだとEclipseのデバッガが使えず(WTPのデバッガでいけるのかもしれんがやり方は知らんw)実行して確認するしかない。これだとしょうもないケアレスミスにはまることも多い。
てかケアレスミスでヌルポが発生していることに気づかずはまった経験あり。--);

これは別にStrutsというかJavaに限らず、テンプレートエンジン全般の問題だとは思う。

解決策のひとつはView Helperパターンをつかって、条件分岐をJSPからHelperにもってくることかなと思っている。

View Helperパターンのイメージは↓参照。
サルでもわかる 逆引きデザインパターン 第3章 逆引きカタログ J2EE編 ViewHelper(ビューヘルパ)

こうすればStrutsのtaglibはlogic:iterateとbean:writeだけでいけるんじゃねって思ってる(ただしhtmlタグは除くよ)。

ようするにビューから条件分岐を無くせばかなり見通しは良くなるのではないか。

JSPのEL式でもいいかもしれないけど、そんなに共通化出来ない場合はおおげさかなと思ってる。