2012-02-07 2 views
0

Groovy의 metaclass 기능을 사용하여 String 클래스에 문자열 유틸리티 메소드를 추가하려고합니다. 지금은 내 BootStrap.groovy 스크립트 내 초기화 폐쇄에 이런 일이 :Grails의 객체에 메소드를 추가하고 전역 적으로 사용할 수있게 해줍니다.

String.metaClass.upper = { 
    delegate.toUpperCase() 
} 

문제는이 upper 방법은 다른 곳을 사용하려고 ... 부트 스트랩의 범위 내에서만 사용할 수 있습니다 Grails 애플 리케이션에서 작동하지 않습니다 및 메서드 누락 된 오류가 나타납니다.

이러한 방법을 모든 곳에서 사용할 수있는 방법이 있습니까?

답변

0

테스트 및 실행 컨텍스트 모두에서 발생합니까? http://jira.grails.org/browse/GRAILS-8596

+0

테스트에서 메소드를 사용하려고 시도하지 않은 버그가 있습니다. 내가 추가 한 메소드 중 하나를 사용하고있는 뷰를로드하려고 할 때 존재하지 않는다는 것을 알 수 있습니다. 그러나 BootStrap의 정의 바로 뒤에 중단 점을 넣으면 올바르게 추가 한 메서드를 사용하는 시계를 추가 할 수 있지만 범위를 벗어나면 메서드 누락 오류가 발생합니다. –

+0

새로운 Grails 2.0 프로젝트로'String.upper()'예제를 시도해 보았습니다.이 예제는 컨트롤러와 뷰 모두에서 저에게 효과적입니다. 'BootStrap.groovy'와 그 코드를 호출하기 위해 사용하고있는 코드 전체를 게시 할 수 있습니까? – ataylor

관련 문제