我在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"))
获取数据?
答案 0 :(得分:0)
你可以做到这一点,朋友! ;)
您只需要对代码进行一些修改即可。因为您将表单定义为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参考可供您参考: