|
前の記事の追記として、最新バージョンのPebble(1.7.1beta?)が動作しないので色々と調査してたら、SimonBrown氏ご自身も動かなくなったようで記事を書かれていました。(記事)
JSTLで、index out of range: -3 となるエラーです。 私のところでは「-1」となっていますがたぶん同じ原因だと思います。
私も完全に原因を把握していませんが、おそらくForEachのネストにあると思われます。つまりJSTLでForEachをネストさせて2度ループされている部分が原因のようです。
JSTLの環境は変えていないので、Action ControllerがJSPに与える変数(配列)の問題ではないかと思います。
以前はCollectionクラスで渡していたものをPebble1.7ではList(ArrayList)で渡すように変更されている部分があります。ただ、そうではない部分で同じエラーが出ているのでよくわかりません。配列に格納したクラスの問題かもしれません。
このネスト部分をJSTLのForEachではなくJSPのFor文で書いて実行してみたところ動くようになりました。
となるとJSTLの内部で配列内のクラスを評価する部分で何か問題がおきているのではと推測されます。
もうひとつ考えられるのは、forEachとforEachの間でJSPでpageContextに変数を格納して、それをTaglibで参照したりしてる箇所があることも何か問題になる原因なのかもしれません。
前の記事でJSTLが限界かなと感じたのはこのあたりのことも要因なのです。MovableTypeがMTタグを実装しているように、JSTLよりアプリケーションレベルでのカスタムタグで実装したほうが良いのではと思ってしまいます。
|