2009-06-04 22 views
13

Ví dụ từ FormPanel's javadoc nói:GWT: Làm thế nào để có được kết quả một trình ra khỏi FormPanel

" ... Giả sử các dịch vụ trở lại một phản ứng của kiểu text/html, chúng tôi có thể nhận được văn bản kết quả ở đây (xem Tài liệu FormPanel để giải thích thêm) ... "

Tuy nhiên, javadoc không giải thích một chút về chủ đề này. Có ai tìm thấy cách nhận phản hồi HTML được gửi lại từ máy chủ sau khi gửi biểu mẫu không?

Trả lời

6

Thêm FormHandler vào FormPanel của bạn và trong onSubmitComplete, bạn sẽ nhận được FormSubmitCompleteEvent. Gọi phương thức getResults() của nó để lấy kết quả.

form.addFormHandler(new FormHandler() { 
    public void onSubmit(FormSubmitEvent event) { // validation etc } 

    public void onSubmitComplete(FormSubmitCompleteEvent event} { 

     Window.alert(event.getResults()); // display the result 
    } 

}; 
+1

Không làm việc cho tôi. event.getResult() được gọi trên GWT 1.6 trên Mac trả về null. – ciukes

+0

Bạn có chắc chắn thực sự đang trả lại nội dung nào đó từ tệp tải lên không? I E. nếu bạn đưa nó cho một servlet, hãy sử dụng response.getOutputStream(). write ("Works!"); response.getOutputStream(). flush(); –

0

// =========== ở phía khách hàng:

SubmitCompleteHandler sch = new SubmitCompleteHandler() 
{ 
    public void onSubmitComplete(SubmitCompleteEvent event) 
    { 
    //get back the data results that had input the .xml 
    String dpsString = event.getResults(); 

    //And do your wanted action with the result 
    System.out.println(dpsString); 
    } 
}; 
uploadForm.addSubmitCompleteHandler(sch); 

// =========== ở phía máy chủ:

// parse and handle file, e.g. if there is an xml file 
... 
InputStream fileImputStream = uploadItem.getInputStream(); 
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance(); 
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder(); 
Document doc = docBuilder.parse(fileInputStream); 
doc.getDocumentElement().normalize(); 
System.out.println("Root element of the doc is " + doc.getDocumentElement().getNodeName()); 
... 
//Response to the request with the result 
dpsString = doc.getDocumentElement().getNodeName(); 
response.getWriter().write(new String(dpsString)); 
3

Tiếp theo answear từ "Robert Munteanu", bạn nên xem xét:

http://google-web-toolkit.googlecode.com/svn/javadoc/2.0/com/google/gwt/user/client/ui/FormPanel.SubmitCompleteEvent.html

Và ở đó bạn có thể thấy:

getResults

getResults java.lang.String công cộng()

Gets văn bản kết quả của việc nộp mẫu đơn.

Returns:

kết quả html, hoặc null nếu đã có lỗi khi đọc nó

Mẹo:

Kết quả html có thể được null như là kết quả nộp một mẫu đơn để một khác nhau miền.

0

Tôi đã thử thay thế máy chủ cục bộ bằng tên máy mà không giúp [một số người nói nó giúp chúng], nhưng nó là một vấn đề java-script tên miền chéo vì vậy tôi đã thử chỉ sử dụng mẫu URL được gán trong xml web và tôi nhận được kết quả Chuỗi. để biết chi tiết nhìn lên câu trả lời vịt cao su trong liên kết này

GWT Blobstore error calling createUploadUrl()

0

tôi đã có thể nhận được thông báo kết quả trên chế độ DEV với đoạn mã sau:

phía khách hàng: bên

FormPanel formPanel = new FormPanel(); 
      FormElement.as(formPanel.getElement()).setAcceptCharset("UTF-8"); 
formPanel.setAction(sb.toString()); 
formPanel.setMethod(FormPanel.METHOD_POST); 
formPanel.setVisible(false); 
RootPanel.get().add(formPanel); 
formPanel.submit(); 
formPanel.addSubmitCompleteHandler(new FormPanel.SubmitCompleteHandler()  {     
@Override 
    public void onSubmitComplete(SubmitCompleteEvent event) { 
     String results = event.getResults(); 
    } 
}); 

máy chủ :

response.setContentType("text/html"); 
response.setHeader("Pragma", "No-cache"); 
response.setDateHeader("Expires", 0); 
response.setHeader("Cache-Control", "no-cache"); 
response.getWriter().write(e.getMessage()); 

Trình duyệt: Firefox 24.3.0, Phiên bản GWT: 2.5.1

0

Đối với tôi, vấn đề là tôi đã xây dựng FormPanel với hàm tạo FormPanel(String) của mình. Với hàm tạo mặc định, SubmitCompleteHandler của tôi chỉ hoạt động.

Các vấn đề liên quan