2

私はほぼ 1 週間前に Play の作業を開始しました。私が今やろうとしているのは、routes ファイルによって行われる型の検証をインターセプトすることです。私は完全にサーバー プログラミングを行っています。フォームは関係ありません。取得するすべてのデータは uri を介して取得されます。Rout に従うことを検討してください。

    GET /send/request/*to/*from     controllers.Req_controller.sendRequest(to: Int, from:Int)

整数の代わりに数字以外の文字または文字列を入力すると、型違反エラーが発生します。play にこれをさせたくありません。これらのエラーを自分で処理したいので、JSON オブジェクトを返すのが良いオプションです。

しかし、私はしたくない、

  Bad request  For request 'GET /send/request/3/f' [Cannot parse parameter from as Int: For input string: "f"] 

ヘルプは非常に高く評価されます

4

1 に答える 1

3

アスタリスクroutes付きのパラメーターは、String複数の「スラッシュセグメント」にまたがるためのものであり、ファイルの末尾のどこかに配置する必要がありroutesます。つまり:

GET     /some/*path    controllers.Application.resolvePath(path: String)

一致します:

http://domain.tld/some/a       it will pass 'a' String as a path param
http://domain.tld/some/a/b     it will pass 'a/b'
http://domain.tld/some/a/b/c   it will pass 'a/b/c'

あなたの場合、パラメータの「コロンバージョン」を使用する必要があります:

GET  /send/request/:to/:from  controllers.Req_controller.sendRequest(to: Integer, from:Integer)

編集

基本的なインターセプトを行うには、グローバル オブジェクトonBadRequest()でメソッドをオーバーライドするだけです(下)。

また、全体*patha/b/c文字列としてコントローラーに送信し (この回答の最初のサンプル ルートのように)、それを分割して、より洗練されたシナリオで部分的に検証することもできます。とにかく、いくつかの可能性があることがわかります。必ず何かを選んでください。

于 2012-07-17T14:23:57.667 に答える