繁体   English   中英

为什么我会得到null指针异常:从带有表单url编码的视图中获取值时为null?

[英]Why do I get null pointer exception: null when getting value from view with form url encoded?

我在Play框架中使用Java / html-scala进行编码。

我正在尝试使用表单url编码从我的视图中获取一个值,但我得到的只是空指针异常。 在我的控制器中,我这样做:

String[] searchTag= request().body().asFormUrlEncoded().get("questionTag"); //this is where I get my null pointer exception
//questionTag is the name of my input field in the view

在我看来:在我的顶端,我有:

@helper.form(action=routes.TeacherController.ValidateQuestion(), 'enctype -> "multipart/form-data", 'class -> "form-horizontal") {... //rest of my code

我的输入字段:

<input name="questionTag" class="input-xxlarge">

在同一视图中,我允许用户上传文件,并使用以下命令在控制器的同一功能中获取该文件:

Http:MultipartFormData body = request().body().asMultipartFormData();
Http.MultipartFormData.FilePart attachment = body.getFile("attachment");

我想知道是否可能导致此异常,导致我无法在同一视图中使用两种方法(multipart / form-data和asFormUrlEncoded().get("questionTag"))数据?

你可以做到的,朋友! ;)

您只需要对代码进行一点修改。 因为您将表单定义为multipart/form-data ,所以应该在控制器中进行如下处理:

// get all request content as MultipartFormData
Http.MultipartFormData formData = request().body().asMultipartFormData();

// get the form data
Http.MultipartFormData.FilePart attachment = formData.getFile("attachment");
String[] searchTag = formData.asFormUrlEncoded().get("questionTag"); // works!!

注意,在formData变量上,也有一个称为asFormUrlEncoded()方法。 它将从multipart-form 提取数据部分

请勿与方法RequestBody.asFormUrlEncoded()混淆,因为该API表示,它用于将请求内容解析为URL形式编码。

希望下面的API参考可以供您参考:

  1. RequestBody API文档
  2. MultipartFormData API文档

祝好运!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM