webwork2よりチェックしていたが、やっと日の目を見るようになったのが嬉しい。
これからstruts1に成り代わってがんばってほしい。
最近、2.0.6から2.0.8にバージョンアップしたようだ。
リリースノートを追うと、
Restful2ActionMapperなるものを発見。まだ実験らしいが、Restfulが使える。嬉しいかも。
Restfulとは、Representational State Transferの略らしく、要はHTTPのメソッド(GET, POST, PUT, DELETE)に、struts2でいうアクションクラスのメソッドに対応付けるもの。(すごく適当ですが)
以下を見てもらえればイメージが湧くと思います。
- GET: /movie => method="index"
- GET: /movie/Thrillers => method="view", id="Thrillers"
- GET: /movie/Thrillers!edit => method="edit", id="Thrillers"
- GET: /movie/new => method="editNew"
- POST: /movie/Thrillers => method="create"
- PUT: /movie/ => method="update"
- DELETE: /movie/Thrillers => method="remove"
ただし、ブラウザじゃ、PUTとDELETEがよべないから、httpのパラメータ名「__http_method」のvalueにdeleteとかputとかを書くみたいですね。。humm。
早速ソースを拝見。以下一部抜粋。
↓でputかを判定している。
// Updating an item e.g. foo/1 } else if (isPut(request)) { mapping.setMethod("update"); }
↓でputの判定方法はputのリクエストか、HTTP_METHOD_PARAMが"put"という文字列かという判定。ベタベタだ。
protected boolean isPut(HttpServletRequest request) { if ("put".equalsIgnoreCase(request.getMethod())) { return true; } else { return isPost(request) && "put".equalsIgnoreCase(request.getParameter(HTTP_METHOD_PARAM)); } }
ふむふむ。以外と単純。これであれば自分でルールを簡単に作れそうですね。こんな単純であれば実験でも怖くないですね。
struts2がもっと流行るように祈りつつ。とりあえず、以下を一読して寝る。
Starting Struts 2