2012-03-09 5 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에 라벨이있다. 'lablel.setName(). ** ** 할 일은 없습니다. ** – NewCodeLearner

+1

@NewCodeLearner 양식에 게시 된 각 필드는 HTML 태그'input'이어야합니다. 라벨은'div'이므로 작동하지 않습니다. Label은 정적이므로 사용자 입력에 반응하지 않으므로 숨겨진 입력 필드를 사용하고 해당 필드에 레이블 값을 저장할 수 있습니다. GWT에서는'Hidden' 위젯을 사용할 수 있습니다. UI에는 표시되지 않지만 Label에 값을 설정할 때 값을 설정해야하며이 값은 숨겨진 위젯에 설정 한 이름으로 제출됩니다. –

2

몇 가지 :

  1. 왜 서버와의 통신에 GWT-RPC를 사용하지 않는? 이것은 데이터를 전송하는 데 선호되는 방법입니다.
  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