2014-08-28 1 views
0

다음을 통해 컨트롤러 내에서 사용자 정의 태그 라이브러리에 인스턴스를 얻기 위해 시도 :Grails를 - 애플리케이션 컨텍스트를 통해 얻기 태그 라이브러리 콩

def myTagLib = grailsApplication.mainContext.getBean('com.mypackage.MyTagLib') 

내가받을 다음과 같은 오류 : 그러나

No bean named 'com.mypackage.MyTagLib' is defined. Stacktrace follows: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'com.mypackage.MyTagLib' is defined

, 문제없이 taglib에 내장 된 인스턴스를 얻을 수 있습니다.

def g = grailsApplication.mainContext.getBean('org.codehaus.groovy.grails.plugins.web.taglib.ValidationTagLib') 

01에 따르면,이 작동합니다. 누구든지 내 taglib을 유효한 bean으로 인식하지 못하는 이유를 알고 있습니까? 당신의 태그 라이브러리가 (좋은 방법이 일반적이다) 네임 스페이스하면 내가 Grails는 문서의 Section 8.3.5에 따르면 Grails를 2.4.0

답변

1

을 사용하고

, 당신은 단순히 접두사로 네임 스페이스를 사용하여 태그 라이브러리의 메서드를 호출 할 수 있습니다 메서드 호출. 당신은 그것이 "행복"속성을 받아 들인다 "스마일"라는 메소드를 가지고 "내"네임 스페이스 태그 라이브러리가있는 경우 예를 들어

는, 당신은 필요한 별도의 수입과 컨트롤러에 다음 줄을 수 :

my.smiley(happy: true) 
+0

위의 내용은 컨트롤러 또는 다른 taglib에는 해당되지만 실제로는 그렇지 않습니다. 예를 들어 src/groovy 파일에서 taglib에 액세스하려면 원래 접근 방식을 취해야합니다. bean을로드하고 있기 때문에 클래스 이름이 아닌 bean의 등록 된 이름을 사용하려고합니다. –