私のGinが注入されたGWTアプリケーションは、アクティビティと場所とともにRequestFactoryを使用します。
stableId()
プレイス内のRequestFactoryをトークン化するために、RequestFactoryを注入します。これにより、クラスはとにアクセスできgetProxyId(token)
ますgetHistoryToken(stableId)
。Tokenizerは、静的ではない保護されたメソッドを呼び出して、特定のプレイスをトークン化します。
これがサンプルクラスです。
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例外が発生します。
これを行うためのより良い方法はありますか?ポインタありがとうございます。