sola's note -14ページ目

sola's note

日ごろのメモを書いていきます。何か新しいものを作るために。

病的にハマった

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フォルダに入っていると思います。

無事解決。
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
配下でした。

まだ入れたばかりでファイル構成等分りませんが、
動作確認が出来たので、上記でなんとかなる模様です。