2009-02-26 10 views
53

में यूआरएल पैरामीटर कैप्चर करना मुझे एक जीडब्ल्यूटी एप्लीकेशन बनाने की ज़रूरत है जिसे बाहरी यूआरएल पैरामीटर के साथ बाहरी एप्लिकेशन द्वारा बुलाया जाएगा।जीडब्ल्यूटी: जीईटी अनुरोध

उदाहरण के लिए:

http://www.somehost.com/com.app.client.Order.html?orderId=99999

मैं जीडब्ल्यूटी एप्लिकेशन के अंदर ऑर्डर आईडी पैरामीटर कैप्चर कैसे करूं?

+0

मैं इसी तरह की समस्या पर काम कर रहा हूं, आप ऑर्डर आईडी = 99 999 जैसे पैरामीटर पर ऐप को कैसे प्रतिस्थापित करते हैं? मेरा मतलब है कि यह इस तरह के पैरामीटर को कैसे संभालता है? – xybrek

+0

@xybrek यदि आप GWT में प्रदान किए गए [इतिहास तंत्र] (http://www.gwtproject.org/doc/latest/DevGuideCodingBasicsHistory.html) पर विचार नहीं करते हैं (जो पेज रीलोडिंग से बचने के लिए # का उपयोग करता है), तो आप मुख्य प्रविष्टि बिंदु 'ऑनलोड()' विधि में आपके मुख्य प्रविष्टि बिंदु में एक विधि डालने की आवश्यकता है।हर बार जब पेज कहा जाता है तो यह आपकी समर्पित विधि का आह्वान करेगा जिसमें आप दिए गए पैरामीटर का निरीक्षण और प्रक्रिया कर सकते हैं। – Dennis

उत्तर

83

प्रयास करें,

String value = com.google.gwt.user.client.Window.Location.getParameter("orderId"); 
// parse the value to int 

पी.एस. जीडब्ल्यूटी मूल जावास्क्रिप्ट का आह्वान कर सकता है जिसका अर्थ है कि जावास्क्रिप्ट सामान कर सकता है, जीडब्ल्यूटी इसे भी कर सकता है; जैसे GWT में, आप

public static native void alert(String msg) 
/*-{ 
$wnd.alert("Hey I am javascript"); 
}-*/; 

लिख सकते हैं इस मामले में, आप भी मौजूदा जावास्क्रिप्ट lib का उपयोग क्वेरी स्ट्रिंग में परम का मान प्राप्त करने के कर सकते हैं।

बजाय http://app.com/?param=value#placehttp://app.com/#place&param=value

आदेश सभी पैरामीटर प्राप्त करने के लिए:

String value = Window.Location.getParameter("param"); 

सुनिश्चित करें कि आपके URL के रूप में कर रहे हैं बनाओ:

+1

@codemeit, इसे gwt कोड में कहां रखा जाए? मुख्य प्रवेश बिंदु में? उदाहरण के लिए, मेरे पास http://mygwtapp.com/process.html?query=123 है जिसे किसी अन्य वेब ऐप द्वारा कॉल किया जाएगा, या केवल ब्राउज़र बार में लिखा गया हाथ। – xybrek

+0

** एस ** ट्राइंग होना चाहिए, है ना? –

19

GWT URL से पैरामीटर प्राप्त करने के लिए एक सुविधा है मानचित्र में, उपयोग करें:

Map<String, List<String>> map = Window.Location.getParameterMap(); 
+1

यह विधि 'विंडो। स्थान .getParameter ("param")' मेरे जीडब्ल्यूटी एप्लिकेशन के लिए सबसे अच्छा काम करता है क्योंकि इसे हर जगह रखा जा सकता है। – hyip

0

मैं सुझाव देता हूं कि y कहां GWT MVP का उपयोग करें। मान लें कि आपके यूआरएल के रूप में

http://www.myPageName/myproject.html?#orderId:99999

और अपने AppController.java में -

कोशिश के रूप में

...... 
    public final void onValueChange(final ValueChangeEvent<String> event) { 
    String token = event.getValue(); 

    if (token != null) { 
     String[] tokens = History.getToken().split(":"); 
     final String token1 = tokens[0]; 
     final String token2 = tokens.length > 1 ? tokens[1] : ""; 

     if (token1.equals("orderId") && tonken2.length > 0) { 
      Long orderId = Long.parseLong(token2); 
      // another your operation 
     } 
    } 
} 
........... 

एक अन्य विकल्प हैं, आप भी साथ उपयोग कर सकते हैं Spring MVC। यहाँ एक उदाहरण है ...

// Below is in your view.java or presenter.java 

Window.open(GWT.getHostPageBaseURL() + "customer/order/balance.html?&orderId=99999", 
      "_self", "enable"); 

// Below code in in your serverside controller.java 

@Controller 
@RequestMapping("/customer") 
public class ServletController { 
@RequestMapping(value = "/order/balance.html", method = RequestMethod.GET) 
public void downloadAuctionWonExcel(@RequestParam(value = "orderId", required = true) final String orderId, 
    final HttpServletResponse res) throws Exception { 
    try { 
     System.out.println("Order Id is "+orderId); 
     // more of your service codes 
     } 
     catch (Exception ex) { 
     ex.printStackTrace(); 
     } 
    } 
} 
0

आप Activities और Places ऐसा करने के लिए उपयोग कर सकते हैं। जब आप अपने पेज के लिए जगह बनाते हैं, तो आप ऑर्डर आईडी को सदस्य के रूप में सेट कर सकते हैं। इस सदस्य को बाद में उपयोग किया जा सकता है जब आप Activity जगह से जुड़े होते हैं (गतिविधि मैपर में)।

केवल प्रतिबंध यह है कि आप ऑर्डर आईडी को सामान्य पैरामीटर के रूप में नहीं भेज सकते हैं। आपको इस फॉर्म के साथ एक यूआरएल का उपयोग करना होगा:

127.0.0.1:60206/XUI.html?#TestPlace:orderId=1 
संबंधित मुद्दे