我的注入 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 异常。
有一个更好的方法吗?谢谢你的指点。