gpt4 book ai didi

java - 使用 JSTL 循环列表列表

转载 作者:行者123 更新时间:2023-12-02 04:59:25 25 4
gpt4 key购买 nike

我有一个取决于学校代码的类(class)列表。此类(class)列表将添加到另一个列表中,使其成为列表中的列表。

Action 类:

private List<String> schoolList;
private List<String> socList;
private List<String> sobList;
private List<String> sodList;
private List<String> genlist;
private List<List<String>> courseList = new ArrayList<List<String>>();

@Override
public String execute() {
FacultyManager fm = new FacultyManager();
schoolList = fm.getColumn("school_description", "school");

genlist = fm.getCoursesBySchoolCode("GEN");
sobList = fm.getCoursesBySchoolCode("SOB");
socList = fm.getCoursesBySchoolCode("SOC");
sodList = fm.getCoursesBySchoolCode("SOD");

courseList.add(genlist);
courseList.add(sobList);
courseList.add(socList);
courseList.add(sodList);

return SUCCESS;
}

JSP:

<c:forEach var="school" items="${schoolList}" varStatus="ctr">
<ul>
<li>${school}
<ul>
<c:forEach var="course" items="${courseList}">
<li>${course}</li>
</c:forEach>
</ul>
</li>
</ul>
</c:forEach>

输出 enter image description here

如何制作输出:

  • 普通教育
    • 普通教育部
  • 商学院
    • BSBA - 财务管理
    • BSBA - 营销和广告

...等等。

最佳答案

您正在一遍又一遍地迭代所有学校的整个类(class)列表,从而重复相同的输出,就像您调用 courseList.toString() 一样。方法多次。

您应该迭代当前学校的具体类(class)列表,这很可能(但在您的问题中没有说明)取决于外部 <c:forEach> 的当前迭代索引环形。这又被捕获在 index 中。导出的属性ctr学校列表迭代索引的变量(从零开始)。

因此,您应该迭代 courseList 的特定列表。列表,取决于当前学校。您可以通过调用courseList.get(ctr.index)来做到这一点,假设您使用的是 EL2.2+。

这一切都会产生:

<c:forEach var="school" items="${schoolList}" varStatus="ctr">
<ul>
<li>${school}
<ul>
<c:forEach var="course" items="${courseList.get(ctr.index)}">
<li>${course}</li>
</c:forEach>
</ul>
</li>
</ul>
</c:forEach>

也就是说,List<List<String>>听起来不是一个好的模型选择。例如,如果您更改插入顺序,您将看到错误的类(class)。 Map<String, List<String>>构造更适合您的域模型,因为它可用于将学校名称明确映射到类(class)名称列表。

另一个需要认真考虑的选项是对象的使用(你最终是在进行 OOP)。您应该放弃纯字符串并进入对象域。首先,研究以下类层次结构:

public class Course {
//...
private School school;
//...
}

public class School {
//...
private List<Course> courses;
//...
}

关于java - 使用 JSTL 循环列表列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28434186/

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