我在 Play 框架中使用 Java/html-scala 进行编码。
我正在尝试使用编码的表单 url 从我的 View 中获取一个值,但我得到的只是空指针异常。 在我的 Controller 中,我这样做:
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
在我看来: 在我的 View 顶部,我有:
@helper.form(action=routes.TeacherController.ValidateQuestion(), 'enctype -> "multipart/form-data", 'class -> "form-horizontal") {... //rest of my code
我的输入框:
<input name="questionTag" class="input-xxlarge">
在同一个 View 中,我允许用户上传一个文件,然后我在 Controller 中使用相同的函数获取该文件:
Http:MultipartFormData body = request().body().asMultipartFormData();
Http.MultipartFormData.FilePart attachment = body.getFile("attachment");
我想知道这是否会导致此异常,我无法使用两种方法(multipart/form-data 和 asFormUrlEncoded().get("questionTag"))获取数据
在同一个 View 中?
最佳答案
你可以的, friend ! ;)
您只需要对代码稍作修改。因为您将表单定义为 multipart/form-data
,所以您应该在 Controller 中进行如下处理:
// 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 引用可以供您引用:
祝你好运!
关于java - 为什么会出现空指针异常: null when getting value from view with form url encoded?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16157673/