2014-01-22 72 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将被解析。