有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我正在Play框架中用Java/HTMLScala编码

我试图使用表单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/formdata和asFormUrlEncoded().get("questionTag")))获取数据


共 (1) 个答案

  1. # 1 楼答案

    你能做到的,朋友!;)

    您只需要对代码进行一点修改。由于将表单定义为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()的方法。它将从^{中提取数据部分

    不要与方法RequestBody.asFormUrlEncoded()混淆,因为API说,它用于将请求内容解析为URL表单编码

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

    1. ^{} API Docs
    2. ^{} API Docs

    祝你好运