1

我的问题可能最好用一些示例代码来解释:

@Named
public class Search {
    @Inject @Select(Type.SEARCH)
    private Criteria criteria;
}

@Named
public class Selection {
    @Inject @Select(Type.SELECTION)
    private Criteria criteria;
}

public class Criteria {
    private final List<Selection> statics;
    private final List<Selection> choosables;

    @Inject
    public Criteria(
            @Any Instance<List<Selection>> statics,
            @Select(Type.CHOOSABLE) List<Selection> choosables,
            InjectionPoint ip) {
        Select sel = ip.getAnnotated().getAnnotation(Select.class);
        this.statics = cloneList(statics.select(sel).get());
        choosables = cloneList(choosables);
    }
}

这个想法是Criteria具有处理Selection对象列表的所有逻辑,但是要管理的实际列表因Criteria类的用户而异。就目前而言,Weld 抱怨无法找到具有匹配限定符的类,因为Criteriais not annotated @Select。那么-Criteria无论@Select资格赛如何,我都可以有资格注射吗?还是有另一种方法可以将该信息传递给Criteria班级?

编辑:事实证明,这里已经以类似的形式提出了这个问题。

4

0 回答 0