JSP中的JSTL循环用于嵌套的未编译列表
MVC – servlet将请求转发给JSP。 在servlet中我创建了类别的列表(java.util.List),将此列表附加到servlet上下文,并将请求转发到JSP页面:
public class Category{ private Integer id; private String name; private Category parentCategory; ... //getters and setters }
此类表示类别/子类别(如果parentCategory字段为null,则它是顶级类别)。 具有相同父级的类别是其子类别,并且它们将映射到JSP中的嵌套无序列表。 示例:结果应与下一个HTML代码类似:
我不知道如何在JSP中遍历此列表。 它可能应该使用不同的JSTL循环或JSP scriptlet的某种组合来完成,也许是一些递归。 感谢任何帮助。
您需要像这样填充模型:
public class Category{ private Integer id; private String name; private Category parentCategory; private List subCategories; ... //getters and setters }
在Servlet中,您需要具有类别级别1的LIST(父级为NULL)。
List rootCategories = getAllCategoriesLevel1(); request.setAttribute("rootCategories", rootCategories );
在JSP中(需要3个循环或4,5个循环)
// ... // ... // ... // ... // ...
如果您不知道类别树的深度,仍然可以使用递归生成菜单。
在前一个响应中使用与Loc相同的模型,您必须定义一个名为menuitem.jsp
的jsp页面,它将以递归方式调用:
${menuitem.name}
在我们的主JSP页面中,初始化变量menuitem并包含jsp。
${subCategory.subCategoryName} ${subCategory.subCategoryName}
我的子类别级别有限 – 到3级。所以,这是servlet中的代码:
// findAll() - returns all categories in database, as a list List categories = categoryDao.findAll(); ServletContext servletContext = getServletContext(); servletContext.setAttribute("categories", categories);
这些是JSP页面中的循环,我从列表中提取数据并生成html标记:
Categories
- java.lang.UnsatisfiedLinkError:在java运行的java.libary.path中没有lwjgl
- SQL错误:ORA-02000:在创建基于标识列的表时缺少ALWAYS关键字
- 如果我只想测试JdbcTemplate代码,@ DataJpaTest的等价物是什么?
- IntelliJ IDEA – Java代码中SQL语法的突出显示
- HtmlUnit,如何在不单击提交按钮的情况下发布表单?
- 在java的Annotation Processor中发现methodinvocation的类
- 使用递归比较字符串以确定哪个字母顺序排在第一位Java
- 使用Java和Scribe的Vimeo搜索API
- 是否有一个Java相当于Javascript的“一些”方法?