2009-06-19 14 views
6

मैं कुछ भाग्य के लिए इसे किसी भी भाग्य के साथ आजमा रहा हूं।GWT FormPanel को ठीक से काम करने में असमर्थ

final FormPanel form = new FormPanel(new NamedFrame("test")); 
form.setAction("/designer"); 
form.setMethod(FormPanel.METHOD_POST); 
VerticalPanel panel = new VerticalPanel(); 
form.setWidget(panel); 

final TextBox tb = new TextBox(); 
tb.setName("style"); 
panel.add(tb); 
panel.add(new Button("Submit", new ClickHandler() { 
public void onClick(ClickEvent event) { 
    Window.alert("submitting to:" + form.getTarget()); 
    form.submit(); 
    } 
})); 
form.addSubmitCompleteHandler(new SubmitCompleteHandler() { 
public void onSubmitComplete(SubmitCompleteEvent event) { 
    Window.alert("complete"); 
    Window.alert(event.getResults()); 
} 
}); 

होस्टेड मोड में, चेतावनी आग को "सबमिट करने" के बाद कुछ भी नहीं होता है। क्रोम में, फॉर्म एक अलग टैब में लोड होता है, लेकिन पोस्ट स्वयं खाली होता है। फ़ायरफ़ॉक्स और आईई में, फिर, अलर्ट के बाद कुछ भी नहीं होता है। कोई विचार?

मैंने/डिजाइनर पर एक सर्वलेट स्थापित किया है जो किसी भी पृष्ठ अनुरोध से अनुरोध हेडर और बॉडी आउटपुट करता है। मैं इस सर्वलेट को एक सादे HTML पृष्ठ से हिट कर सकता हूं और अपेक्षित आउटपुट देख सकता हूं। जीडब्ल्यूटी से, कोई अनुरोध कभी नहीं दिखाई देता है (क्रोम को छोड़कर, जिसमें अनुरोध दिखाया गया है, लेकिन एक खाली निकाय के साथ)।

उत्तर

1

आपका कोड लगभग FormPanel API पर उदाहरण के समान है, इसलिए मुझे यह मानना ​​चाहिए कि तर्क सही है।

क्या एक सर्वलेट "/ डिजाइनर" पर मौजूद है? SubmitCompleteHandler के लिए प्रलेखन बताता है कि सबमिट सबमिट होने पर ऑनसममिट कॉम्प्लेट इवेंट केवल तभी आग लग जाता है। http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/77e68fcb9097debc

2

नीचे करने के लिए form.setWidget(panel); चलती का प्रयास करें:

यहाँ एक सर्वलेट कि प्रपत्र पद संभालती लिखने के लिए कुछ नमूना कोड के साथ एक धागा है।

इसके अलावा, सुनिश्चित करें कि आप कंटेनर पैनल यानी add(form); में फॉर्म जोड़ते हैं, लंबवत पैनल नहीं।

0

मैं जानता हूँ कि इस पोस्ट 3 साल पुराना है, लेकिन मेरे जैसे किसी भी गूगलर की खातिर जो यहाँ भूमि, के लिए इस बात के लिए OnSubmitCompleteEvent निष्पादित करने की शर्तें हैं:

  1. उपयोग नहीं फॉर्म बनाने के लिए -र्ग कन्स्ट्रक्टर: फॉर्मपैनेल एफ = नया फॉर्मपेनल();। जैसा कि Javadoc में उल्लेख किया गया है:

    एक नया फॉर्मपैनल बनाता है। जब यह निर्माता का उपयोग कर बनाया है, यह परिणामों की सबमिशन के माध्यम से {@link SubmitCompleteHandler} उपलब्ध कराया एक छिपा हुआ < आइफ्रेम > तत्व को प्रस्तुत किया जाएगा, और।

    तो यह केवल एकमात्र ऐसा है जो फ़ॉर्म सबमिशन को सफल होने पर पूरा करता है।

  2. सुनिश्चित करें कि कार्रवाई बुलाया जा रहा है सामग्री प्रकार के साथ एक प्रतिक्रिया लौटाता करें: "text/html"

एक समाधान, आप अभी भी अपने बाहरी NamedFrame उपयोग करने की आवश्यकता है, फ्रेम पर LoadEvent के लिए देखना है। फ्रेम लोड होने पर इसे निकाल दिया जाता है, जिसका अर्थ है कि सर्वर से प्रतिक्रिया आ गई: ...

NamedFrame frame = new NamedFrame("test"); 
frame.addLoadHandler(new LoadHandler() 
{ 
    void onLoad(LoadEvent event) 
    { 
     //your code here 
    } 
}); 

उम्मीद है कि यह मदद करता है!

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