2011-02-10 21 views
6

क्या एक अनुरोध में दो इकाइयों को बनाने के लिए RequestFactory का उपयोग करने का कोई तरीका है? मैंने कोशिश की:जीडब्ल्यूटी अनुरोध फ़ैक्टरी और एकाधिक अनुरोध

EmployeeRequest request = requestFactory.employeeRequest(); 
    EmployeeProxy newEmployee = request.create(EmployeeProxy.class); 
    newEmployee.setName("Joe!"); 

    Request<Void> createReq = request.persist().using(newEmployee); 
    createReq.fire(); 

    EmployeeProxy newEmployee2 = request.create(EmployeeProxy.class); 
    newEmployee2.setName("Sam!"); 

    Request<Void> createReq2 = request.persist().using(newEmployee2); 
    createReq2.fire(); 

लेकिन मुझे एक त्रुटि है कि अनुरोध पहले ही प्रगति पर है। जब मैंने दो अलग-अलग कर्मचारी अनुरोध किए:

EmployeeRequest request = requestFactory.employeeRequest(); 
    EmployeeProxy newEmployee = request.create(EmployeeProxy.class); 
    newEmployee.setName("Joe!"); 

    Request<Void> createReq = request.persist().using(newEmployee); 
    createReq.fire(); 

    EmployeeRequest request2 = requestFactory.employeeRequest(); 
    EmployeeProxy newEmployee2 = request2.create(EmployeeProxy.class); 
    newEmployee2.setName("Sam!"); 

    Request<Void> createReq2 = request2.persist().using(newEmployee2); 
    createReq2.fire(); 

फिर ब्राउज़र से दो अलग-अलग अनुरोध किए गए हैं। मुझे आशा है कि RequestFactory में कुछ एकाधिक अनुरोधों को मर्ज कर सकता है - मुझे एक समय में सैकड़ों इकाइयां बनाना है, और मैं सैकड़ों अनुरोध नहीं करना चाहता हूं!

उत्तर

9

हां, यह संभव है। जब आप अंत में createReq2.fire() फोन अपने पहले उदाहरण में, बस लाइन

createReq.fire(); 

निकालें, तब GWT दोनों newEmployee और newEmployee2 एक ही अनुरोध में (भेजता है क्योंकि वे दोनों "request" अपने EmployeeRequest के संदर्भ में कायम)। मैं व्यक्तिगत रूप से अर्थशास्त्र को थोड़ा अजीब लगता हूं, लेकिन यह मेरी राय है। रिले द्वारा

परिशिष्ट: निम्नलिखित वाक्य रचना के बराबर है और भी बहुत कुछ सहज है:

EmployeeRequest request = requestFactory.employeeRequest(); 
    EmployeeProxy newEmployee = request.create(EmployeeProxy.class); 
    newEmployee.setName("Joe!"); 

    request.persist().using(newEmployee); 

    EmployeeProxy newEmployee2 = request.create(EmployeeProxy.class); 
    newEmployee2.setName("Sam!"); 

    request.persist().using(newEmployee2); 
    request.fire(); 
+0

ओह, कैसे अजीब। सचमुच अजीब। क्या इसका मतलब यह है कि मैंने सभी लगातार() कॉल किए जाने के बाद आग() कॉल को शेड्यूल करने के लिए कुछ तंत्र बनाना है, जिसे मैं बनाना चाहता हूं? मुझे लगता है कि एक स्थगित आदेश के साथ करना बहुत आसान होगा, लेकिन ... अजीब तरह का! –

+0

@Riley: मैं उस कोड को लपेटूंगा जो किसी विधि में या अपनी ऑब्जेक्ट में अनुरोध बनाता है। मैं नवीनतम अनुरोध को याद रखने के लिए कुछ चर (या फ़ील्ड) का उपयोग करता हूं। फिर कोड के इस भाग को निष्पादित करने के बाद, मैं नवीनतम अनुरोध पर आग बुलाऊंगा। (मैं एक स्थगित कमांड का उपयोग नहीं करता - यह बहुत कमजोर है, क्योंकि यह सुनिश्चित करना आसान नहीं है, जब यह ठीक से निष्पादित होगा।) –

+0

अद्यतन: मैं मूर्खतापूर्ण गलती कर रहा था और अब आपका कोड बहुत अच्छा काम कर रहा है। मैं अनुरोधों को एकत्रित करने के तरीकों के बारे में सोचूंगा। धन्यवाद क्रिस! –

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