私はプレイ フレームワークを学習しており、次のようなリクエストをマッピングできることを理解して/manager/user
います。
GET /manage/:user Controllers.Application.some(user:String)
のようなリクエストをどのようにマッピングし/play/video?video_id=1sh1
ますか?
私はプレイ フレームワークを学習しており、次のようなリクエストをマッピングできることを理解して/manager/user
います。
GET /manage/:user Controllers.Application.some(user:String)
のようなリクエストをどのようにマッピングし/play/video?video_id=1sh1
ますか?
少なくとも 2 つの可能性があります。それらapproach1
を と と呼びましょうapproach2
。
0
その上に何らかの条件を構築するのが最も簡単なので、良い候補です。またtypesafe
、 であり、それ自体を事前検証します。最初はこのソリューションをお勧めします。String
それを整数に解析し、必要に応じてさらに検証する必要があります。routes
:
GET /approach1 controllers.Application.approach1(video_id: Int ?=0)
GET /approach2 controllers.Application.approach2
行動:
public static Result approach1(int video_id) {
if (video_id == 0) return badRequest("Wrong video ID");
return ok("1: Display video no. " + video_id);
}
public static Result approach2() {
int video_id = 0;
if (form().bindFromRequest().get("video_id") != null) {
try {
video_id = Integer.parseInt(form().bindFromRequest().get("video_id"));
} catch (Exception e) {
Logger.error("int not parsed...");
}
}
if (video_id == 0) return badRequest("Wrong video ID");
return ok("2: Display video no. " + video_id);
}
PS: LOL String識別子を使用したいことに気付きました...とにかく、両方のアプローチは似ています:)
URLをコントローラーで機能するようにマップするだけの場合、あなたが意図したことを理解しているかどうかはよくわかりませんが、biesiorの答えは完璧ですが、次のようなgetメソッドでフォームを送信することを意味する場合
@helper.form(action = routes.YourController.page1()) {
}
次のようなURL書き換え形式のURLにフォームのパラメーターを含める
page1/foo/bar instead of page1?param1=foo¶m2=bar
それは http の仕様なので、それを行う方法はありません
コントローラーの最初の関数でパラメーターを取得し、次のように別のビューにリダイレクトすることで、この制限を回避することがよくあります。
public static Result page1(){
String param1 = Form.form().bindFromRequest().get("param1");
String param2= Form.form().bindFromRequest().get("param2");
return ( redirect( routes.YourController.page2(param1,param2)));
}
次に、ページ2に何でもあります
public static Result page2(String param1,String param2){
...............
}
そしてこれをルートファイルに入れます:
GET page2/:param1/:param2 controllers.YourControllers.page2(param1 : String, param2 : String )
役に立てば幸いですが、それがベストプラクティスかどうかはわかりません
わかりましたので、ドキュメントを読んだだけです。私が理解しているのは、あなたがする必要があるということです
GET /play/video Controllers.Application.video()
そして、コントローラで HttpRequest オブジェクトの getQueryString を呼び出します
http://www.playframework.com/documentation/api/2.1.0/java/index.html