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