病的にハマった
Slim3でセッションに格納した情報をJSPで表示するやり方。
JSPに対応するControllerで、forwardを行う前に
sessionScope("hogeList", hogeList);
をする事でセッションにオブジェクトを格納できる。
一方フォワード先のJSPでは
<c:forEach var="hoge" items="${hogeList}">
${f:h(hoge.name)}<br/>
</c:forEach>
とやる事で、配列等を表示できる。
…ハズなんだけど、
最初出来なかったorz
GAEの特徴である、
appengine-web.xmlファイルに
<sessions-enabled>true</sessions-enabled>
を書かないとセッションが使えない
という有名な話は、以前GAEをSlim3を使わずにやった時に
無駄に苦戦させられたので承知の上だったけれど、
それでも出来なく、陥った。
結果から言うと、
Slim3の場合何か設定をしなければいけないというのではなく、
Antで自動生成したJSPには
デフォルトで
<%@page pageEncoding="UTF-8" isELIgnored="false" session="false"%>
が記述されているのが原因です。
よく見て下さい。
後半を。
session="false"
そう
s e s s i o n = " f a l s e "
なんだよ。
せっしょんふぉるす!!
知識不足がいけないんだけど、
想定外過ぎると言うのと、
明示的にセッション定義なんて記述したことなかった
というのが…。
orz。。。
無駄に悩んだ。
前回の続きで、
Controller、JSPと作成し、
次はModelクラスとなった時。
前回 同様
build.xmlを用いてAntビルドでModelクラスを自動生成する。
…が
Metaクラスが同時に生成されるはずが、されない。
設定を何かし忘れたのかと確認したところ、
対象のプロジェクトのプロパティを開き、
Javaコンパイラー>注釈処理>ファクトリー・パス
に、
「プロジェクト固有の設定を可能にする」をONにして、
注釈プロセッサーを含むプラグイン及びJAR欄に
/slim3-blank/lib/slim3-gen-1.0.5.jar
を追加する必要があったみたい。
上記jarファイルはブランクプロジェクトを入れた時に、
libフォルダに入っていると思います。
無事解決。
Controller、JSPと作成し、
次はModelクラスとなった時。
前回 同様
build.xmlを用いてAntビルドでModelクラスを自動生成する。
…が
Metaクラスが同時に生成されるはずが、されない。
設定を何かし忘れたのかと確認したところ、
対象のプロジェクトのプロパティを開き、
Javaコンパイラー>注釈処理>ファクトリー・パス
に、
「プロジェクト固有の設定を可能にする」をONにして、
注釈プロセッサーを含むプラグイン及びJAR欄に
/slim3-blank/lib/slim3-gen-1.0.5.jar
を追加する必要があったみたい。
上記jarファイルはブランクプロジェクトを入れた時に、
libフォルダに入っていると思います。
無事解決。
Slim3でControllerとJSPの連携テスト
Slim3のブランクプロジェクトを入手し
http://ameblo.jp/tmp-avatar/entry-10748010813.html
とりあえず環境を整える
build.xmlを開いて
<taskdef name="gen-controller"…
にターゲットを合わせ、
右クリック>実行>Antビルド(1)
そうすると
Input a controller path
と出てくるので、
/test/send
とか適当に入力します。
上記の場合は
[パッケージ]/test/SendController.java
と
war/test/send.jsp
が自動生成されます。
無事自動生成されたと思ったのですが、
なんかJSPにエラーが。。。
Can not find the tag library descriptor for "http://java.sun.com/jsp/jstl/core"
なんか見つかんねーよって言われていますが、
slim3のプラグイン導入時に設定された
eclipseフォルダ配下の
repackaged-appengine-jakarta-standard-x.x.x.jar
というやつを、ビルドパスの構成で追加してあげれば、
とりあえず警告は消えます。
自分の場合は
eclipse\plugins\com.google.appengine.eclipse.sdkbundle.1.3.8_1.3.8.v201010161055\appengine-java-sdk-1.3.8\lib\tools\jsp
配下でした。
まだ入れたばかりでファイル構成等分りませんが、
動作確認が出来たので、上記でなんとかなる模様です。
Slim3のブランクプロジェクトを入手し
http://ameblo.jp/tmp-avatar/entry-10748010813.html
とりあえず環境を整える
build.xmlを開いて
<taskdef name="gen-controller"…
にターゲットを合わせ、
右クリック>実行>Antビルド(1)
そうすると
Input a controller path
と出てくるので、
/test/send
とか適当に入力します。
上記の場合は
[パッケージ]/test/SendController.java
と
war/test/send.jsp
が自動生成されます。
無事自動生成されたと思ったのですが、
なんかJSPにエラーが。。。
Can not find the tag library descriptor for "http://java.sun.com/jsp/jstl/core"
なんか見つかんねーよって言われていますが、
slim3のプラグイン導入時に設定された
eclipseフォルダ配下の
repackaged-appengine-jakarta-standard-x.x.x.jar
というやつを、ビルドパスの構成で追加してあげれば、
とりあえず警告は消えます。
自分の場合は
eclipse\plugins\com.google.appengine.eclipse.sdkbundle.1.3.8_1.3.8.v201010161055\appengine-java-sdk-1.3.8\lib\tools\jsp
配下でした。
まだ入れたばかりでファイル構成等分りませんが、
動作確認が出来たので、上記でなんとかなる模様です。