2

Play フレームワークで Java/html-scala をコーディングしています。

エンコードされたフォーム URL を使用してビューから値を取得しようとしていますが、null ポインター例外しか取得しません。私のコントローラーでは、次のことを行います。

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"))同じビューで) でデータを取得できないのでしょうか?

4

1 に答える 1

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 リファレンスを参考にしていただければ幸いです。

  1. RequestBodyAPI ドキュメント
  2. MultipartFormDataAPI ドキュメント

幸運を!

于 2013-04-23T00:08:32.177 に答える