appengine java + slim3 の開発では、scenic3にお世話になっています。

scenic3は t2 frameworkのようなPageクラスをslim3で実現するslim3の拡張ライブラリです。

scenic3

ページ作るの便利なんで。

そのPageクラスを作るときにアノテーションとか忘れそうになるんでメモしておきます。

@Page リクエストパスの1個目?を指定する

@ActionPath = リクエストパスの2個目以降を指定する

手が覚えるまで迷うのがこれら。

@Var = リクエストパスの中に引数を指定した場合に書く

私にとってコレが簡単に出来る事がscenic3を使う理由のひとつ。

@RequestParam = リクエストパラメータ(GET引数)を引数にする場合に書く

勿論メソッド内で request.getParameter(“xxx”) とも書けるけど、明示的にメソッドの引数にも出来るってこと。

自然語でメモするとなんかややこしい・・・。

簡単なPageクラスはこんな感じになる。

@Page("/path")
public class PathPage extends ScenicPage
{

    @ActionPath("to/{id}")
    public Navigation list_json(
            @Var("id") String id
            , @RequestParam("limit") Integer limit
            , @RequestParam("offset") Integer offset
    )
    {
        // POSTの場合はコッチ
        String hoge = (String) request.getAttribute("hoge");

        ....
        return forward("/path/to/page.vm");
    }

}

AppUrl.java への追加も忘れずに。

public AppUrls()
{
    excludes("/_ah/*");
    excludes("/remote_api"); 
    add(PathPageMatcher.get());
}