java - 为什么会出现空指针异常: null when getting value from view with form url encoded?

标签 java playframework nullpointerexception forms

我在 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 引用可以供您引用:

  1. > RequestBody API Docs
  2. > MultipartFormData API Docs

祝你好运!

关于java - 为什么会出现空指针异常: null when getting value from view with form url encoded?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16157673/

相关文章:

java - 如何将变量传递给此 run() 函数?

java - 如何在play框架2.1中保存对象

java - 自定义 addToDisplay 方法在另一个类中返回异常

c++ - 如何返回列表成员 C++ 的空指针?

java - Android在 fragment 中获取图像的文件路径

java - CREATE TABLE 的 SQL 语法错误

java - 网站中的希伯来语渲染

playframework - Play 框架中的 SQL 访问是否被阻止?

playframework - 如何在 Play 中管理不同环境的配置属性

java - 正则表达式匹配特定字符串或数字