2010-01-13 12 views
11

मैं स्ट्रिंग के नाम से ग्रोवी क्लास के क्लास इंस्टेंस को प्राप्त करने का प्रयास कर रहा हूं।ग्रोवी/Grails - स्ट्रिंग से कक्षा उदाहरण कैसे प्राप्त करें?

उदाहरण के लिए, मैं इन पंक्तियों के साथ कुछ कोड क्या करना चाहते हैं:

def domainName 

domainName = "Patient" 

// but following line doesn't work, domainName is a String 
def domainInstance = domainName.get(1); 

उत्तर

22

Grails रास्ता GrailsApplication#getArtefact उपयोग करने के लिए किया जाएगा। उदाहरण के लिए,

def domainInstance = grailsApplication.getArtefact("Domain",domainName)?. 
     getClazz()?.get(1) 

इसे इस तरह के रूप में करने का विरोध किया Class.forName करने का लाभ यह है कि अगर वहाँ इस नाम का कोई डोमेन वर्ग है, getArtefact सिर्फ अशक्त बजाय एक अपवाद फेंकने की रिटर्न है।

-3

ठीक है, संकुल

का उपयोग कर
  • इस कोड का प्रयास करें अपने कोड लागू करने के लिए

    1. कोशिश : मुझे नहीं पता कि यह ठीक काम करेगा या नहीं?

    def domainInstance = Class.forName("Patient").newInstance()

  • 2

    यह काम करेगा:

    Class.forName("Patient", false, Thread.currentThread().contextClassLoader).get(1) 
    
    +0

    जो मैं खोज रहा था, लेकिन अगला वाला शून्य शून्य है। फिर भी धन्यवाद! –

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