2009-06-04 3 views
13

की FormPanel's javadoc से उदाहरण का कहना है:GWT: कैसे एक प्रस्तुत परिणाम प्राप्त करने के लिए बाहर FormPanel

"... यह मानते हुए सेवा के प्रकार पाठ/html एक प्रतिसाद दिया, हम यहाँ परिणाम पाठ प्राप्त कर सकते हैं (देखें आगे स्पष्टीकरण के लिए फॉर्मपैनल दस्तावेज) ... "

हालांकि जावाडोक इस विषय के बारे में कुछ नहीं बताता है। क्या किसी ने पाया है कि फ़ॉर्म सबमिट करने के बाद सर्वर से वापस भेजे गए HTML प्रतिक्रिया को कैसे प्राप्त किया जाए?

उत्तर

6

अपने फॉर्मपैनल में एक फॉर्म हैंडलर जोड़ें, और सबमिट करें में आपको एक फॉर्मसबमिट कॉम्प्लेटेवेंट प्राप्त होगा। परिणाम प्राप्त करने के लिए अपने getResults() विधि को आमंत्रित करें।

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

    public void onSubmitComplete(FormSubmitCompleteEvent event} { 

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

}; 
+1

मेरे लिए काम नहीं कर रहा है। मैक पर जीडब्ल्यूटी 1.6 पर बुलाया event.getResult() शून्य वापस आता है। – ciukes

+0

क्या आप वाकई फ़ाइल अपलोड से कुछ वापस कर रहे हैं? अर्थात। यदि आप इसे सर्वलेट पर सौंप देते हैं, तो प्रतिक्रिया का उपयोग करें .getOutputStream()। लिखें ("वर्क्स!"); response.getOutputStream() फ्लश()।; –

0

// ग्राहक के पक्ष में ===========:

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); 

// सर्वर साइड में ===========:

// 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

आप को देखना चाहिए "रॉबर्ट मुंटेनो" से answear के बाद:

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

और वहाँ आप देख सकते हैं:

getResults

सार्वजनिक java.lang.String getResults()

प्रपत्र प्रस्तुत करने के परिणाम पाठ हो जाता है।

रिटर्न:

परिणाम एचटीएमएल, या अगर कोई इसे पढ़ने में एक समस्या हुई अशक्त

युक्ति:

परिणाम एचटीएमएल एक अलग करने के लिए एक पर्चे को जमा करने की वजह से अशक्त हो सकता है डोमेन

0

मैंने स्थानीय होस्ट को मशीन नाम से बदलने की कोशिश की, इससे मदद नहीं मिली [कुछ लोगों ने कहा कि यह उनकी मदद करता है], लेकिन यह एक क्रॉस डोमेन जावा-स्क्रिप्ट समस्या है इसलिए मैंने केवल यूआरएल पैटर्न का उपयोग करने की कोशिश की वेब एक्सएमएल में और मुझे एक स्ट्रिंग परिणाम मिला। जानकारी के लिए इस लिंक में रबर बतख जवाब को देखने के लिए

GWT Blobstore error calling createUploadUrl()

0

मैं निम्नलिखित कोड के साथ देव मोड पर परिणाम संदेश प्राप्त करने में सक्षम था:

ग्राहक के पक्ष:

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(); 
    } 
}); 

सर्वर साइड :

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

ब्राउज़र: फ़ायरफ़ॉक्स 24.3.0, जीडब्ल्यूटी संस्करण: 2.5।1

0

मेरे लिए समस्या यह थी कि मैंने FormPanel(String) कन्स्ट्रक्टर के साथ अपना FormPanel बनाया। डिफ़ॉल्ट कन्स्ट्रक्टर के साथ, मेरे SubmitCompleteHandler ने अभी काम किया।

संबंधित मुद्दे