2011-01-27 17 views
33

मैं बस सोच रहा था कि Play से डिफ़ॉल्ट संकुल को बदलना संभव है या नहीं। उदाहरण के लिए: मैं "नियंत्रक" पैकेज को "com.test.controllers" में बदलना चाहता हूं। मुझे नहीं पता कि यह कोई समझ में आता है, लेकिन मैं सिर्फ यह जानना चाहता हूं कि यह कैसे संभव है। मुझे प्ले वेबसाइट में इससे संबंधित कुछ भी नहीं मिला।प्ले फ्रेमवर्क: प्ले डिफ़ॉल्ट पैकेज कैसे बदलें?

उत्तर

5

play1 और 2 स्पष्ट के बीच भेद बनाने के लिए अपडेट किया गया।

प्ले 1.x के लिए, यह संभव नहीं है।

नहीं, सभी नियंत्रक पैकेज में या नियंत्रकों के उप पैकेज में होना चाहिए। आप एक com.test पैकेज संरचना रखने के लिए चाहते हैं तो आपके controllers.com.test

अधिक जानकारी के लिए, see this thread.

कर सकते हैं Play2.x के लिए, यह संभव है।

तो सरल जवाब यह है कि यह आपके द्वारा उपयोग किए जा रहे प्ले के संस्करण पर निर्भर करता है।

+0

देखें अन्य मामले में जैसा कि मामला नहीं है (केवल अगर लोगों को गलत विचार मिलता है)। –

+1

इतना आसान नहीं है। प्ले 2 वास्तव में यह अनुमति देता है, लेकिन प्ले 1 के वर्तमान संस्करण। मैं भेद करता हूं क्योंकि प्ले 1 और प्ले 2 बहुत अलग ढांचे हैं, और यह एक सरल अपग्रेड पथ नहीं है। – Codemwnci

13
manual से

:

एक नियंत्रक वर्ग नियंत्रकों पैकेज में परिभाषित किया जाना चाहिए और play.mvc.Controller का एक उपवर्ग होना चाहिए।

कंट्रोलर क्लास नाम से पहले जावा पैकेज जोड़ सकते हैं यदि यह नियंत्रक पैकेज के तहत सीधे परिभाषित नहीं है। नियंत्रक पैकेज स्वयं अंतर्निहित है, इसलिए आपको इसे निर्दिष्ट करने के लिए की आवश्यकता नहीं है।

इसका मतलब यह है कि आप com.test.controllers करने के लिए अपने controllers पैकेज को बदल नहीं सकते हैं (क्योंकि जड़ पैकेज controllers होना चाहिए), लेकिन आप controllers.com.test को बदल सकते हैं।

+3

अब यह संभव है। जवाब देखें http://stackoverflow.com/a/9994758/808125 नीचे –

1

इस here की चर्चा है।

एफएक्यू में this भी है।

+0

कृपया केवल लिंक के बजाय विवरण जोड़ें। लिंक सड़ांध। Https://meta.stackexchange.com/questions/144566/new-policy-on-link-only-answers –

20

current प्ले 2.0 प्रलेखन के अनुसार, इस अब संभव है:

ध्यान दें कि प्ले 2.0 में, नियंत्रक, मॉडल और विचारों पैकेज का नाम सम्मेलनों अब सिर्फ इतना है कि और बदला जा सकता है अगर जरूरत है इस तरह के हैं (com.yourcompany के साथ सबकुछ उपसर्ग के रूप में)।

यह एक खाली प्ले आवेदन के लिए अच्छी तरह से काम करता है, वहाँ फिर भी कुछ विवरण को ध्यान में रखना हैं और कुछ के लिए:

  1. दृश्य टेम्पलेट्स में कस्टम नामस्थान आयात कर रहा है उन हैं कि को छोड़कर किसी भी प्रकार के लिए काम करेंगे टेम्पलेट की पहली पंक्ति में घोषित किया गया है, जो स्केल के लिए तर्क हैं जो दृश्य से उत्पन्न फ़ंक्शन प्रस्तुत करते हैं। हमारा कामकाज दृश्य टेम्पलेट की पहली पंक्ति में घोषणाओं को टाइप करने के लिए पूर्ण पैकेज नाम जोड़ना है।
  2. मार्ग फ़ाइल में परिभाषित प्रत्येक नेमस्पेस के लिए (उदाहरण के लिए एक कस्टम पैकेज और संपत्ति मार्ग के लिए डिफ़ॉल्ट पैकेज), प्ले 2.0 समान नामस्थान के भीतर एक संबंधित मार्ग स्रोत फ़ाइल उत्पन्न करता है, इसलिए आपको सही फ़ाइल को संबोधित करने के लिए देखभाल करने की आवश्यकता है उदाहरण के लिए पुनर्निर्देशन कर रहा हूँ।
+0

मुझे कुछ समस्या समझने की समस्या 2 थी - मान लीजिए कि हम डिफ़ॉल्ट पैकेज से foo.bar पैकेज में स्थानांतरित करते हैं, तो इसका मतलब है कि दृश्यों में किसी भी दूरस्थ मार्ग को रूट से बदलने की आवश्यकता है। आवेदन। Method foo.bar.controllers.Application.method पर। –

+3

मान लीजिए कि आपके पास MyMethod नामक एक हैंडलर विधि वाला नियंत्रक MyController है। यदि आप इसे "नियंत्रक" पैकेज से "com.example.controllers" में ले जाते हैं, तो आपको अपने स्कैला टेम्पलेट्स में (1) करना होगा, @ routes.MyController.myMethod() को @ com.example.controllers.routes में बदलें। MyController .myMethod() और (2) अपने कंट्रोलर क्लास में ही, नियंत्रकों से किसी भी रीडायरेक्ट को बदलें (जैसे किसी फॉर्म को पोस्ट करने के बाद)। com.example.controllers.routes.MyController.someMethod (MyController.someMethod())। –

+0

तो मैं 2.4.x पर हूं - मैं com.yourcompany के साथ पैकेज को उपसर्ग करने के बारे में कैसे जा सकता हूं। मेरे पास 'com', 'conf',' public' और 'test' 'com/yourcompany' के अंतर्गत है लेकिन एसबीटी उन फ़ोल्डरों के अंदर किसी भी .java फ़ाइलों को संकलित नहीं कर रहा है। मुझे इस बारे में कोई डॉक्टर नहीं दिख रहा है। – ronaldwidha

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