您好我有一个对象列表,而这些对象又包含一个列表。我想在表中迭代这些。这样的事情。
<af:table value="#{backingBeanScope.evaluateBackingBean.subjects}"
var="subject">
<af:forEach var="course" items="${subject.courses}">
<af:column sortable="false"
headerText="#{evaluategyansokanviewcontrollerBundle.SUBJECT}"
id="colSubject" width="200">
<af:outputText value="#{subject.name}"id="ot2"/>
</af:column>
<af:column sortable="false"
headerText="#{evaluategyansokanviewcontrollerBundle.COURSE}"
id="colCourse">
<af:outputText value="#{course.name}"id="ot3"/>
</af:column>
...
我知道这段代码不起作用,但只是想知道我想要什么。
此致 约翰内斯
答案 0 :(得分:0)
对我而言,最简单的方法是在使用JSF进行渲染之前,先在Java中将其展平。那么你只需要在表中使用“普通”语法。所以也许是一个按主题列出的课程列表:
List<CourseBySubject> coursesBySubject;
public List<CourseBySubject> getCoursesBySubject() {
if (coursesBySubject == null) {
coursesBySubject = new ArrayList<Object>();
Iterator<Subject> subjectIterator = subjects.iterator();
while (subjectIterator.hasNext()) {
Subject subject = subjectIterator.next();
courses = subject.getCourses();
Iterator<Course> courseIterator = courses.iterator();
while (subjectIterator.hasNext()) {
Course course = courseIterator.next();
coursesBySubject.add(new CourseBySubject(subject.name, course.name));
}
}
}
return coursesBySubject;
}
答案 1 :(得分:0)
如果您正在寻找两层数据 - 意味着包含数据的数据或具有集合子集的集合,那么af:table实际上并不是理想的组件。
根据您想要实现的目标,您可能首先考虑其中一些问题:
如果你想要更多的UI布局,那么adf有两个组件可以满足您的需求:
两者都非常相似,只是af:foreach只支持List类型,而迭代器在使用bindings.data.collectionModel时会提供灵活性。
还有一点值得一提的是af:foreach允许你有组件绑定,而af:iterator将代表节点,这意味着它生成的布局将只被视为服务器端的一个对象。
我假设您正在寻找具有两个级别的基于表的数据,并且行选择对您很重要。在这种情况下,af:treetable是您最好的选择,因为您可以获得其他功能,例如父行的折叠/解折叠。
如果您没有使用绑定collectionModel(dataControl模型) - 有些可能看起来有问题 - 那么请确保POJO集合为子集集提供访问器(setter)。
例如
public abstract class Foo {
public abstract List<Country> getCountries();
public static abstract class Country {
public abstract List<City> getCities();
}
public static abstract class City {
}
}
万一你想知道为什么你不能使用af:table主要是因为af:treeTable允许你选择父和子,事实上,你的bean甚至可以区分选择是否反对的区别父母与孩子。
话虽如此,你也可以选择使用af:table并错过一些af:treeTable功能,可能依赖一些自定义属性来区分你选择的内容。
答案 2 :(得分:0)
你可以在af:table&gt;中使用af:table。 AF:列。最高支持ADF 11.1.1.6。