Errai中@Default字段的分辨率不明确

时间:2019-05-22 13:37:49

标签: java cdi errai

我有一个带有两个选项的菜单,并且根据我选择的选项,我的应用程序应显示RepoNavBar或UserNavBar。这些课程是NavBar的子级。

我有一个CommonPage,其中所有项目中都有一些通用组件,并且此类有两个子级RepoCommonPage和UserCommonPage,其中两个子级分别声明为RepoNavBar和UserNavBar。

CommonPage使用类似ContentComponent类型的类,

public void setup(CommonPage<?> parentPage) { 
    ...
}

当我尝试编译时,出现此错误:

  

原因: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();
    }
}

1 个答案:

答案 0 :(得分:1)

我敢打赌FullName(以及其他类似FullName的人)应该是UserCommonPage

此外,如果这还不够的话,也许您需要创建第三个中间类,为每个用例扩展RepoCommonPage。例如:

abstract