2014-01-22 71 views
3

這是一個帶有用戶名和電子郵件字段的簡單表單。Play Framework 2.0 - asJson()總是返回null

<form method="post" action="@routes.Application.signup()" enctype="application/json"> 
    <input type="text" id="username" name="username"> 
    <input type="text" id="email" name="email"> 
    <button type="submit">Sign up</button> 
</form> 

現在我嘗試解析request().body()作爲documentation

@BodyParser.Of(BodyParser.Json.class) 
public static Result signup() { 
    RequestBody body = request().body(); 
    return ok("Got json: " + body.asJson()); 
} 

這將返回null。 request().body().toString()並不儘管在事實上,我可以打印請求,這將顯示爲:

DefaultRequestBody(Some(Map(username -> List(james), email -> List([email protected]))),None,None,None,None,None,false) 

基本上我想從請求,但該方法的toJSON總是返回null提取的姓名和電子郵件。

+0

可能與該enctype有關? http://stackoverflow.com/a/4150273/1536382 –

+0

嗯,我已經嘗試完全刪除enctype屬性,它仍然爲空,但文檔說它應該設置爲應用程序/ JSON。 – user3224429

+0

是否正在導入'play.mvc.Http.RequestBody'?這可能是你導入錯誤類型的RequestBody ..? – brdu

回答

1

我還沒有找到任何記錄,但我遇到了同樣的問題。問題出在你的內容類型頭上。如果你的頭文字說文本,那麼你可以得到身體作爲一個字符串和身體作爲JSON將爲空。同樣,如果你的頭文件說的是json,那麼字符串的主體將爲null,並且身體作爲json將被解析。