【发布时间】:2019-10-09 00:34:13
【问题描述】:
我有一个包含两个选项的菜单,根据我选择的选项,我的应用程序应该显示 RepoNavBar 或 UserNavBar。这些类是 NavBar 的子类。
我有一个CommonPage,里面有所有项目中的一些通用组件,这个类有两个子RepoCommonPage和UserCommonPage,分别声明了RepoNavBar和UserNavBar。
CommonPage 使用 ContentComponent 类型的类,如下所示:
public void setup(CommonPage<?> parentPage) {
...
}
当我尝试编译时,我得到了这个错误:
Caused by: java.lang.RuntimeException: 发现以下依赖问题: [INFO] @Any @Default com.client.local.usermgt.common.UserCommonPage 类中的字段 @Default com.client.local.common.ContentComponent 的不明确解析。
有什么问题?
这就是我的做法:
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();
}
}
【问题讨论】:
-
ContentComponent注入UserCommonPage怎么样? -
就像:
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(); } } -
但我指的是
UserCommonPage中ContentComponent的@Inject定义