2012-03-09 10 views
1

FormPanelを使用しようとしています。 FormPanelgwtでFormpanelからデータを受信

formPanel.setWidget(flexTable); 

チェックボックスリストボックスとするFileUpload上

flexTable.setWidget(4, 1,listBox); 
flexTable.setWidget(5, 1, fileUpload); 
flexTable.setWidget(6, 1, checkBox); 
// More Code 

追加されたサーブレットのコードは、ファイルアップロードのために細かい実行されているすべての値を取得するために書かれています。 ListBoxの値を取得する方法

protected void doPost(HttpServletRequest request, 
     HttpServletResponse response) 
         throws ServletException, IOException { 

    byte[] buffer = new byte[1310720];// 10 MB 

    try { 

     ServletFileUpload upload = new ServletFileUpload(); 

     FileItemIterator iterator = upload.getItemIterator(request); 

     while (iterator.hasNext()) { 
      FileItemStream item = iterator.next(); 
      InputStream stream = item.openStream(); 

      if (item.isFormField()) { 
        // WHAT TO DO?? 

       } else { 

        int len; 

        while ((len = stream.read(buffer, 0, buffer.length)) != -1) { 
        response.getOutputStream().write(buffer, 0, len);      
        } 
       } 
     } 

    } catch (FileUploadException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

}

Plzはチェックボックスとリストボックスの値を取得するのに役立ちます。ここ

答えて

5

サーバー側で値を取得する方法については、Passing parameters along with a multipart/form-data upload form (Java Http Post Upload)を参照してください。

サーバーに値を送信するには、ListBoxおよびCheckBoxウィジェットのsetName()メソッドを使用して各ウィジェットに名前を設定する必要があります。名前はitem.getFieldName()が返す名前です。

+0

ありがとうございました – GameBuilder

+0

@HibrandBouwkamp私はFormpanelにLabelを持っています。 'lablel.setName() 'メソッドはありません** **対処方法** – NewCodeLearner

+1

@NewCodeLearnerフォームに投稿される各フィールドは、HTMLタグの' input'である必要があります。ラベルは 'div'なので、うまくいきません。 Labelは静的なので、ユーザーの入力に反応しないため、非表示の入力フィールドを使用してそのフィールドにラベル値を格納できます。 GWTでは 'Hidden'ウィジェットを使うことができます。 UIには表示されませんが、Labelに値を設定すると値を設定する必要があり、その値は非表示のウィジェットに設定した名前で送信されます。 –

2

いくつかのこと:あなたがサーバーと通信するためにGWT-RPCを使用していないのはなぜ

  1. ?これは、データを転送するための好ましい方法です。
  2. リクエストを処理するためにサーブレットを使用したい場合は、どのように値を送信しますか?あなたのウィジェットはフォームに埋め込まれているのですか、GET-URLに手動で値をエンコードしていますか?フォームを使用する場合、ウィジェット要素(checkbox.getElement().setAttribute("name", "mycheck");)に名前を追加し、サーブレットではrequest.getParameter("mycheck")で値を取得する必要があります。
  3. 私はServletFileUploadを一度も使用していませんが、あなたの要求の異なるファイル部分のみを提供すると信じています。
+2

に各ウィジェットのsetNameに忘れていけない...それはGWT-RPC経由で実行することはできません。そして、 'setAttribute'を使う代わりに、単にウィジェットの' setName'メソッドを使います。 –

+0

ファイルのアップロードについては、合意しました。しかし、データを転送するには、GWT-RPCが必要です。彼が単一の投稿をする必要がある場合、彼はファイルアップロードの周りのフォームに彼のウィジェットを含め、それらのすべてに名前を設定すべきです。 –

+0

はいでも同意しました。あなたがFileUploadをやっていないなら、フォーム投稿を使わないでください。 –

2

Inコードの対処方法。

String name = item.getFieldName(); 
        String value = Streams.asString(item.openStream()); 

やファイルをアップロードする唯一の方法は、フォームを使用することです除きFormpanel

+0

直接コードありがとう – GameBuilder

関連する問題