우리 애플리케이션은 GIN을 사용하여 GWT 리소스 번들을 동적으로 인스턴스화합니다. 이것은 다른 표시 모드에서 런타임에 다른 스타일 시트를로드 할 수 있도록하기 위해 수행됩니다. 일반적으로 이는 표준 GWT.create(MyAppResources.class)
과 반대로 MyApp.ginjector.getResources()
과 같은 것을 사용하여 리소스의 싱글 톤 인스턴스를 만들 수 있음을 의미합니다.UiBinder xml에서 GIN 생성 리소스 사용
이것은 UiBinder 코드를 제외한 모든 항목에서 잘 작동합니다. 우리는 <ui:with ref="res" type="com.company.MyAppResources" />
을 사용했으며 MyAppResources
의 인스턴스는 GWT.create
이 아닌 GIN으로 생성되기를 바랍니다.
GWT UiBinder docs에 따르면이 문제를 처리하는 데는 두 가지 방법이 있습니다. 구성 요소에 @UiField(provided=true)
또는 @UiFactory
을 사용하십시오. 이 두 가지 방법 모두 바람직하지 않습니다. 왜냐하면 내 팀을 포함한 사람들이이 상용구 코드를 모든 위젯에 저장해야한다는 것을 기억해야하기 때문입니다. 더욱이 생성 코드를 생략하면 GWT.create
이 우리가 원하는 리소스가 아닌 리소스의 인스턴스를 생성하기 때문에 모든 것이 여전히 작동하는 것처럼 보입니다.
저는 모든 구성 요소가 사용할 GIN에 위임하는 일종의 글로벌 @UiFactory
메서드를 만드는 방법을 찾고 있습니다. 또는 특정 클래스에 대해 GWT.create
에 연결하고 클라이언트 측 런타임 코드를 사용하면 인스턴스를 만들 수 있습니다. 객체 생성을 내 정적 인 Ginjector
에 위임 할 수 있습니다. 정적 필드 ginjector
와 com.company.MyApp
이있는 경우
오, 즉 영리, I 피난처 ' 이전에 ui : import를 사용했습니다. 청결을 위해 스타일 및 기타 정적 리소스를 UiBinder 파일에 제공한다는 명시적인 목적으로 클래스를 만들 수 있습니다. –
내가 생각한 또 다른 솔루션은 위젯을위한 공통 기본 클래스 (예 : MyAppComposite)를 만드는 것입니다.이 클래스는 특수하게 작성해야하는 경우 리소스 또는 잠재적으로 위젯에 대한 UiFactory 메소드를 제공 할 수 있습니다. –