2008-08-26 8 views
29

Grails एप्लिकेशन में डिफ़ॉल्ट मुखपृष्ठ को संशोधित करने के लिए कॉन्फ़िगरेशन सेटिंग क्या है अब ऐपनाम/index.gsp नहीं है? बेशक आप उस पृष्ठ को रीडायरेक्ट करने के लिए सेट कर सकते हैं लेकिन एक बेहतर तरीका होना चाहिए।आप Grails एप्लिकेशन में डिफ़ॉल्ट मुखपृष्ठ कैसे बदलते हैं?

उत्तर

10

संपादित UrlMappings.groovy

उदाहरण के लिए जोड़ें HomeController के साथ रूट को संभालने के लिए इस नियम जोड़ने के लिए,।

"/" (नियंत्रक: 'घर')

+1

मेरे लिए काम किया, grails 1.3.7 के तहत, एक कार्रवाई के साथ: कुंजी। – jerseyboy

53

UrlMappings.groovy

 
"/" { 
    controller = "yourController" 
    action = "yourAction" 
} 

में इस जोड़े URLMappings इस तरह से कनफिगर, एप्लिकेशन की होम-पेज होगा yourWebApp/yourController/yourAction।

(कट/IntelliGrape Blog से चिपकाया)

+0

शायद विधि Grails के बाद के संस्करणों में बदल गई, क्योंकि यह 1.3.7 पर काम नहीं करता है। डाहेरमैन द्वारा पोस्ट किए गए वाक्यविन्यास का उपयोग करने के लिए मेरे लिए काम किया। – jerseyboy

+2

इसे [आधिकारिक दस्तावेज़] के अनुसार काम करना चाहिए (https://grails.github.io/grails-doc/1.3.7/guide/single.html#6.4.1%20Mapping%20to%20Controllers%20and%20 क्रियाएं) लेकिन अपने नियंत्रक के लिए संक्षिप्त नाम का उपयोग करना याद रखें - यानी यदि आपका नियंत्रक वर्ग पुस्तक नियंत्रक है, तो आप इसे केवल "पुस्तकें" के रूप में संदर्भित करते हैं। – Wonko

2

सरल और साफ

  1. जाओ फ़ाइल: grails एप्लिकेशन के अंतर्गत/conf/UrlMappings.groovy।

  2. लाइन को बदलें: "/" (देखें: "/ अनुक्रमणिका") "/" (नियंत्रक: 'घर', क्रिया: "/ अनुक्रमणिका") के साथ।

घर चलाने के लिए अपने नियंत्रक है और कार्रवाई (जैसा वसंत सुरक्षा में आप 'लॉगिन' का उपयोग कर सकते हैं) grails (स्प्रिंग सुरक्षा '/ प्रमाणन' में) अपने नियंत्रक के साथ जुड़े पृष्ठ को देखने के लिए है।

अपनी आवेदन आवश्यकताओं के अनुसार पृष्ठों का पुनर्निर्देशन जोड़ें।

11

रूप UrlMappings.groovy वर्ग जो विन्यास फ़ोल्डर के अंदर है में
इस प्रकार आप कोशिश कर सकते हैं:

class UrlMappings { 

    static mappings = { 

     "/$controller/$action?/$id?"{ 
      constraints { 
       // apply constraints here 
      } 
     } 

     //"/"(view:"/index") 
     "/" (controller:'Item', action:'index') // Here i have changed the desired action to show the desired page while running the application 
     "500"(view:'/error') 
    } 
} 

आशा है कि यह मदद करता है,
रुबेल

0

सभी उत्तर सही हैं! लेकिन चलो एक परिदृश्य की कल्पना करें:

मैंने नियंत्रक के साथ पथ "/" मैप किया: "होम" और एक्शन: "इंडेक्स", इसलिए जब मैं "/ ऐप-नेम /" एक्सेस करता हूं तो नियंत्रक होम निष्पादित हो जाता है, लेकिन अगर मैं पथ "/ ऐप-नाम/होम/इंडेक्स" टाइप करता हूं, फिर भी इसे निष्पादित किया जाएगा! इसलिए एक संसाधन के लिए 2 पथ हैं। यह तब तक काम करेगा जब तक कि किसी को "होम/इंडेक्स" पथ नहीं मिल जाता।

एक और बात यह है कि यदि मेरे पास कोई एक्शन विशेषता निर्दिष्ट किए बिना कोई फॉर्म है, तो डिफ़ॉल्ट रूप से यह उसी नियंत्रक और कार्रवाई के लिए पोस्ट होगा! इसलिए यदि फ़ॉर्म को "/" पथ में मैप किया गया है और कोई एक्शन विशेषता निर्दिष्ट नहीं है तो इसे उसी नियंत्रक को सबमिट किया जाएगा, लेकिन इस बार पथ आपके पता-बार में "होम/इंडेक्स" होगा, न कि "/", क्योंकि यह यूआरआई को नियंत्रक/कार्रवाई में जमा नहीं किया जा रहा है।

इस समस्या को हल करने के लिए आपको क्या करना है, इन पंक्तियों को निकालना या टिप्पणी करना है।

//  "/$controller/$action?/$id?(.$format)?"{ 
//   constraints { 
//    // apply constraints here 
//   } 
//  } 

तो अब जब आप "/" तक पहुंचेंगे, तो काम करेंगे। लेकिन "घर/सूचकांक" नहीं होगा।लेकिन एक दोष है, अब आपको URLMapping फ़ाइल में स्पष्ट रूप से लिखकर मैन्युअल रूप से नियंत्रकों को सभी पथों को मैप करना होगा। मुझे लगता है कि इससे मदद मिलेगी!

2

उपयोग नियंत्रक, देखें और कार्रवाई पैरामीटर निम्न सिंटैक्स द्वारा:

class UrlMappings { 
    static mappings = { 
     "/" (controller:'dashboard', view: 'index', action: 'index') 
     "500"(view:'/error') 
    } 
}