2014-06-18 12 views
2

과 비슷한 도메인 메소드를 찾을 수 없습니다. GWT를 처음 사용하고 RequestFactory와 함께 버전 2.6을 사용하지만 GWT 유효성 검사 문제가 발생합니다. 어떻게 든 Locator와 LocatorService를 사용하기 시작한 후에 GWT는 도메인 측에서 메소드를 찾을 수 없다. (이 전에는 모든 것이 나를 찾았다.)GWT 2.6 - RequestFactory Locator

내 요청 공장은 다음과 같습니다 : 아래

내 구현

public interface MyRequestFactory extends RequestFactory { 
    MyRequest createRequest(); 

    @Service(value = MyModel.class, locator = MyModelServiceLocator.class) 
    public interface MyRequest extends RequestContext { 
     Request<MyModelProxy> find(String id); 
    } 
} 

내 서비스 로케이터는 다음과 같습니다

public class MyServiceLocator implements ServiceLocator { 
    private static MyService serviceInstance; 

    private static MyService getServiceInstance() { 
     if (serviceInstance == null) { 
      serviceInstance = new MyService(); 
     } 
     return serviceInstance; 
    } 

    @Override 
    public Object getInstance(Class<?> klass) { 
     return MyServiceLocator.getServiceInstance(); 
    } 
} 

내 서비스는 보이는 같은 :

public class MyService { 
    public MyModel find(String id) { 
     // implementations 
    } 
} 

그러나 GWT 유효성 검사는 도메인 측에서 'MyModel find (String)'을 찾을 수 없다는 것에 대해 불평합니다. 그러나 일단이 방법을 MyModel 클래스에 넣으면 (실제로 원하지는 않습니다) 잘 작동합니다.

Google에 가본 적이 있지만 관련 게시물 몇 개가 있지만 그 중 실제로 문제가되는 것은 없습니다. 누군가 나를 도울 수 있습니까? MyRequest의 방법 MyService에서 자신의 도메인 대응이있는 경우

답변

4

, 다음 @ServiceMyService.class하지 MyModel.class를 가리켜 야합니다.

ServiceLocator을 사용한다는 사실은 RequestFactory에게 정적 메서드가 아닌 인스턴스 메서드를 찾아야한다고 말하고 ServiceLocator을 사용하여 @Service이 가리키는 서비스의 인스턴스를 가져옵니다. 일치하는 메서드가 MyModel에있는 경우 (즉, 컴파일 타임 유효성 검사가 통과했을 때) ServiceLocator에 의해 반환 된 MyService 인스턴스가 참조하는 MyModel으로 캐스팅 할 수 없기 때문에 런타임에 오류가 발생했습니다. 귀하의 @Service 특수 효과에 있습니다.