1

私はうまく機能しているPlay2.0フレームワークを持っており、すべてのルートに特定のgetパラメーター(beによってのみ知られている)を追加できるようにしたいと考えています。そのパラメータはルートでは無視する必要があります。

私が説明します。次のようなルートがあるとします。

GET     /add/:id              controllers.MyController.add(id : Int)
GET     /remove/:id           controllers.MyController.remove(id : Int)

たとえば、http://mydomain.com/add/77?mySecretParam = okは引き続きcontrollers.MyController.add(id:Int)に移動し、リクエストオブジェクトでmySecretParamを取得できます。そして、私のすべてのルートについても同じです。

どうすればいいのか分かりますか?

ありがとう。グレッグ

4

2 に答える 2

3
package controllers

import play.api._
import play.api.mvc._
import play.api.data._
import play.api.data.Forms._

object Application extends Controller {

  def mySecretParam(implicit request: Request[_]): Option[String] = {
    val theForm = Form(of("mySecretParam" -> nonEmptyText))
    val boundForm = theForm.bindFromRequest
    if(!boundForm.hasErrors) 
      Option(boundForm.get)
    else
      None
  }

  def index = Action { implicit request=>
   Ok(views.html.index(mySecretParam.getOrElse("the default")))  
  }
}
于 2012-10-08T08:26:06.003 に答える
2

これがJavaです:

あなたのルート

GET     /hello/:id      controllers.Application.hello(id: Int)

アプリケーションコントローラで

public static Result hello(int id){
        //Retrieves the current HTTP context, for the current thread.
        Context ctx = Context.current(); 
        //Returns the current request.
        Request req = ctx.request();    
        //you can get this specific key or e.g. Collection<String[]>
        String[] param = req.queryString().get("mySecretParam"); 
        System.out.println("[mySecretParam] " + param[0]);
        //[req uri] /hello/123?mySecretParam=ok
        System.out.println("[Request URI] "+req.uri().toString()); 
        System.out.println("[Hello-ID]: " + id); //the function parameter in controller
        return ok("[Hello-ID]: " + id + "\n[mySecretParam] " + param[0]);
    }

コンソール出力

[info] play - Application started (Dev)
[Request] GET /hello/123?mySecretParam=imhereyee
[mySecretParam] imhereyee
[Request URI] /hello/123?mySecretParam=imhereyee
[Hello-ID]: 123

あなたの質問の鍵はContextオブジェクトとRequestそこからのオブジェクトです

于 2012-10-08T08:52:38.530 に答える