The HIRO Says

If you smell what The HIRO is cooking!!!

【slim3】JSPでModelを表示できない?

BigTable から取得した Model の List を HttpServletRequest へセットし、JSP で表示しようとしているのですが、うまく表示することができません。。。

1.forEachで型認識がうまくいかない

JSTL の c:forEach を使うと、Model が String 型と認識されてしまいます。
例えば、


と定義した場合、

  1. ${model}・${f:h(model)} はOK
  2. ${model.xxx}・${f:h(model.xxx)} はNG

となります。
エラーメッセージは以下の通り。
javax.servlet.jsp.el.ELException: オペレータ "." を利用しましたが、クラス "java.lang.String" のオブジェクトにおいて "xxx" に対応する値が見つかりません
※getter/setter はきちんと用意しています。
同じことを SAStruts でやったときは、全く問題が発生しませんでした。
GAE のランタイム(もしくはプラグイン)の問題ですかね?

2.castに失敗する

EL ではなくスクリプトレットを使用し、List から Model を取得しようとすると、正しいはずのクラス名を指定しても ClassCastException になります。
エラーメッセージは以下のような感じです。
java.lang.ClassCastException: xxx.yyy.model.order.Order cannot be cast to xxx.yyy.model.order.Order
JSP では、Model を直接参照しない方がよいのですかね?


※GAE プラグインslim3 ともに、2009/11/15 頃に取得したバージョンです。
 ひょっとしてバージョンが古い?