gpt4 book ai didi

java - 如何在使用 adf 业务组件时从托管 bean 填充 jsf 表?

转载 作者:太空宇宙 更新时间:2023-11-04 13:20:48 26 4
gpt4 key购买 nike

我是 ADF 新手,我似乎遗漏了一些东西。我正在使用 Oracle HR 数据库。我使用业务组件作为模型。我有国家、位置和部门的 ViewObjects。以及 FK 在国家/地区-位置和位置-部门之间的 ViewLinks。我公开了 DataControl Country-> Location -> Deperatments。

现在我可以构建一个包含三个区域的 JSF,每个区域都会显示。如果我点击一个国家,我就会得到位置。如果我点击位置,我就会看到部门。这有效。

但我只想显示国家/地区和部门。因此,我实现了一个托管 bean,以利用迭代器并通过该 bean 填充部门表,方法是将其绑定(bind)到表的 value 属性。但我只有 Row 对象要返回,并且由于使用 BC 没有类定义,我可以将行映射回对象。

那么我怎样才能显示一个国家/地区的所有部门呢? ADF 的方法是什么?

我的托管 bean:

public class CountryDepartmensBean {

public CountryDepartmensBean() {
super();
}

private ArrayList<Row> populate;

public ArrayList<Row> getPopulate() {
DCBindingContainer bindings = (DCBindingContainer)BindingContext.getCurrent().getCurrentBindingsEntry();
DCIteratorBinding countriesView1Iterator = bindings.findIteratorBinding("CountriesView1Iterator");

DCIteratorBinding locationsView2Iterator = bindings.findIteratorBinding("LocationsView2Iterator");
DCIteratorBinding departmentsView3Iterator = bindings.findIteratorBinding("DepartmentsView3Iterator");
Row[] locations = locationsView2Iterator.getAllRowsInRange();
ArrayList<Row> employees = new ArrayList<Row>();
for(int i = 0; i < locations.length; i++){
locationsView2Iterator.setCurrentRowIndexInRange(i);
departments.addAll(Arrays.asList(departmentsView3Iterator.getAllRowsInRange()));
}

return departments;
}

public void setPopulate(Row[] rows){

}
}

调用 getPopulate 方法并返回我想要的行,但返回行似乎是错误的方法?

最佳答案

在这种情况下使用托管 bean 本身就是一种错误的方法。
您所需要的只是创建符合您期望的 viewObject。
创建一个连接 Location + Department 表的 viewObject。通过 viewLink 将其设为 Country viewObject 的子级。
现在您可以将主从表拖放到页面上。

关于java - 如何在使用 adf 业务组件时从托管 bean 填充 jsf 表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33074825/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com