2

私の投稿リクエストは次のようになります。

Request URL:http://localhost:9000/getjson?_dc=1381814841666
Request Method:POST

Extjs によって生成されます。そして、私のルートは次のとおりです。

POST        /getjson{?_dc=<[0-9]+>para}                 controllers.Application.getjson(para:String)

そして私のコントローラーは:

object Application extends Controller {

  def index = Action {
    Ok(views.html.index("Your new application is ready."))
  }
  def sidebar = Action {
    Ok(views.html.sidebar("SBide Bar"))
  }
  def showerr(info:String) = Action {
    Ok(views.html.showerr(info))
  }
  // how to cooperate with extjs ?
  def getjson(para:String) = Action(parse.json) { request =>  {
      val jsval: JsValue = request.body
      val w = new PrintWriter(new File("test.txt" ))
      w.write("json: %s".format(jsval.asOpt[String]))
      w.close()

      Ok("get json "+para)
    }
  }
}

しかし、サーバーは投稿に一致するものが見つからないようで、次のように応答します。

Action not found
For request 'POST /getjson?_dc=1381814841666'
These routes have been tried, in this order:
1 GET / controllers.Application.index
2 GET /sidebar controllers.Application.sidebar
3 GET /error/$info<.+> controllers.Application.showerr(info:String)
4 POST /getjson{?_dc=<[0-9]+>para} controllers.Application.getjson(para:String)
5 GET /assets/$file<.+> controllers.Assets.at(path:String = "/public", file:String)

どのように修正すればよいですか?誰が問題が何であるかを見ることができますか?

- 編集

テスト用のルートを試しました:

GET / test$para<%3f_dc=[0-9]+> controllers.Application.test(para:String)

それはそのようなURLでのみ機能しました: /test%3f_dc=123、ではありません/test?_dc=123%3fまた、正規表現の部分のように置き換えようと\?しましたが、正常に準拠しましたが、まだ機能しません。

では、を含む URL のルートをどのように記述すればよい? でしょうか。

--EDIT2

ルートを次のように変更しました。

POST /getjson$para<.*> controllers.Application.getjson(para:String)

これでルートは機能しましたが、para取得したのは空です! 最も重要なのはrequest.bodyis None! ただし、chrome Audits から、json が既に含まれていることがわかりRequest Payloadます。

4

1 に答える 1

0

これは次の方法でのみ機能します。

ルート:

POST /getjson/$_dc<[0-9]+> controllers.Application.getjson(_dc:String)

そして、次のように呼び出す必要があります。

http://localhost:9000/getjson/1381814841666

残念ながら、クエリ パラメータで動作させる方法が見つかりませんでした。それがあなたのために働くことを願っています

于 2013-10-15T06:35:27.377 に答える