PalomaAS:
私は2つのオプションを含むメニューがあり、私が選択したオプションに応じて、私のアプリケーションはRepoNavBar、またはUserNavBarを表示する必要があります。このクラスは、ナビゲーションバーの子です。
私はそこにいくつかの共通のコンポーネントがすべてのプロジェクトであり、このクラスはRepoNavBarとUserNavBar宣言されている2人の子供RepoCommonPageとUserCommonPageを、持っているCommonPageを、持っています。
CommonPageは、このようなタイプのContentComponentのクラスを使用します。
public void setup(CommonPage<?> parentPage) {
...
}
私がコンパイルしようとすると、私はこのエラーを取得します:
java.lang.RuntimeException:によって引き起こされる、次の依存関係の問題が検出されました:[INFO]クラス@Any @defaultのcom.client.local.usermgt.commonのフィールド@default com.client.local.common.ContentComponentためのあいまいな解像度。 UserCommonPage。
何が間違っていることができますか?
これは私がやってどのようです:
public abstract class NavBarComponent implements IsElement {
@Templated(value = "navbar.html#navBtn")
public static class NavBarItemComponent extends SimpleValueItemComponent<String> {...}
...
}
public class RepoNavBarComponent extends NavBarComponent {
...
}
public class UserNavBarComponent extends NavBarComponent {
...
}
public abstract class CommonPage<T extends ContentComponent> {
...
}
public class UserCommonPage<T extends ContentComponent> extends CommonPage<T>{
...
}
public class RepoCommonPage<T extends ContentComponent> extends CommonPage<T> {
...
}
ContentComponentは次のように注入されます。
public class UserCommonPage<T extends ContentComponent> extends CommonPage<T>{
protected UserNavBarComponent userNavBar;
public UserNavBarComponent getUserNavBar() {
return userNavBar;
}
@PageShown
public void preparePageShown() {
log.debug("Page shown");
userNavBar.refresh();
}
}
rbarriuso:
私の賭けはそれであるUserCommonPage
(だけでなく他の人が好きなようにRepoCommonPage
)する必要がありますabstract
。
それが十分ではない場合も、おそらくあなたが拡張する第三の中間クラスを作成する必要がありContentComponent
、各ユースケースのために。例えば:
public abstract class UserCommonPage<T extends UserContentComponent> extends CommonPage<T>{
@Inject
protected UserNavBarComponent userNavBar;
public UserNavBarComponent getUserNavBar() {
return userNavBar;
}
@PageShown
public void preparePageShown() {
log.debug("Page shown");
userNavBar.refresh();
}
}
public class UserContentComponent extends ContentComponent{
...
}