我的注入 Gin 的 GWT 应用程序将 RequestFactory 与活动和地点一起使用。
为了在 Places 中标记 RequestFactory stableId(),我注入了 RequestFactory。这使班级可以访问getProxyId(token)和getHistoryToken(stableId)。Tokenizer 调用非静态的、受保护的方法来标记特定的 Place。
这是一个示例类。
public class StableIdPlace extends Place {
  @Inject private static Provider<StableIdPlace> provider;
  private final MyRequestFactory requestFactory;
  private EntityProxyId<StableIdProxy> stableId;
  @Inject
  public StableIdPlace(MyRequestFactory rf) {
    requestFactory = rf;
  }
  public void setStableId(EntityProxyId<StableIdProxy> which) {
    stableId = which;
  }
  public EntityProxyId<StableIdProxy> getStableId() {
    return stableId;
  }
  protected void setFromHistoryToken(String token) {
    stableId = requestFactory.getProxyId(token);
  }
  protected String getHistoryToken() {
    return requestFactory.getHistoryToken(stableId);
  }
  public static class Tokenizer implements PlaceTokenizer<StableIdPlace> {
    @Override
    public String getToken(StableIdPlace place) {
      return place.getHistoryToken();
    }
    @Override
    public StableIdPlace getPlace(String token) {
      StableIdPlace place = provider.get();
      place.setFromHistoryToken(token);
      return place;
  }
}
该策略需要在需要新地方的地方注入提供者。不幸的是,这包括静态标记器。
我尝试requestStaticInjection()在 Gin 客户端模块中启动静态注入(针对每个 Place 类)。我所拥有的作品——历史除外。我无法让静态提供程序初始化。它会在 Tokenizer 中导致 Null 异常。
有一个更好的方法吗?谢谢你的指点。