2012-07-02 14 views
11

में मैं इस तरह एक यूआरएल उत्पन्न करना चाहते हैं?प्ले ढांचा 2: उपयोग सरणी [स्ट्रिंग] मार्ग

/फोटो टैग = tag1, tag2, tag3

मार्गों फ़ाइल:

GET  /photo controllers.Photos.list(tags:Array[String] ?= "") 

मैं खेलने कंसोल में इस त्रुटियों मिला:

नहीं प्रकार ऐरे [स्ट्रिंग]

प्राप्त करने का सबसे अच्छा तरीका क्या है?

धन्यवाद।

+0

क्वेरी पैराम्स में कोई सरणी करने का सही तरीका (फ्रेमवर्क से कोई फर्क नहीं पड़ता) वास्तव में इस तरह से/फोटो? टैग = टैग 1 और टैग = टैग 2 और टैग = टैग 3 ... यह थोड़ा वर्बोज़ है लेकिन विनिर्देश उस तरह पुनरावृत्ति की अनुमति देता है –

उत्तर

10

मुझे लगता है कि आप एक आम String का उपयोग करना चाहिए और फिर एक Array करने के लिए इसे अपने controller

मार्गों में परिवर्तित करने के बारे में ध्यान रखना:

GET  /photo controllers.Photos.list(tags:String ?= "") 

जावा में:

public static Result list (String tags){ 
    String[] tagsArray = tags.split(","); 
    // do something with tagsArray 
    return ok(); 
} 
+0

यह मेरा पहला विचार था। मैं इस समाधान का उपयोग करूंगा। – mcarrolle

+4

नीचे @ अहमद असवाणी द्वारा वर्णित तरीका HTTP में ऐसा करने का "सही" तरीका है। – sven

16

खेलने जब मान स्ट्रिंग या उसी नाम वाले डेटा पोस्ट करते हैं तो मान सरणी/सूचियों से जुड़ जाएंगे।

यह भी काम करने के लिए लगता है:

This route: http://localhost/controller/{id} 

इस यूआरएल: http://localhost/controller/1?id=2&id=3

controller(int[] id) जहां आईडी करने के लिए बाध्य होगा -> {1, 2, 3}

पोस्टिंग आईडी = 2 & आईडी = 3 भी एक सरणी से बांध जाएगा।

संदर्भ: https://groups.google.com/forum/?fromgroups#!topic/play-framework/c5kB6wmcF8Q

10

बजाय की एक सूची एक सरणी काम करना चाहिए का उपयोग करना। एक तरफ

GET  /photo controllers.Photos.list(tags: java.util.List[String]) 
+0

मैंने कई घंटों के लिए इसकी खोज की है! यह पता चला है कि आप केवल सूची [स्ट्रिंग] का उपयोग नहीं कर सकते हैं। यह डिफ़ॉल्ट रूप से स्कैला प्रकार का उपयोग करेगा! निम्नलिखित अपवाद दिखाई देगा! टाइप विसंगति; मिला: सूची [स्ट्रिंग] (scala.collection.immutable में) आवश्यक: सूची [_] (java.util में) पूर्ण पैकेज नाम का उपयोग करने का सही तरीका है –

2

एक के रूप में, यदि आप चाहता है की एक सरणी पारित करने के लिए चाहते हैं, यह काम करता है::

आप जावा का उपयोग कर रहे हैं, तो यह इस तरह काम करता है

GET /photo controllers.Photos.list(tags: java.util.List[java.lang.Long])

साथ

एक तर्क के रूप में नियंत्रक समारोह List<Long> tags ले रहा है।

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