0

我在尝试使用 JSTL 显示子类别菜单时遇到问题。

我正在开发的网站有一个 CSS 列表菜单类型。菜单类别的名称是在具有主键的数据库中创建的,并且子菜单也在数据库中创建并且具有主键和(外键=“类别”)。我已设法检索并显示此主菜单,但我不知道当用户悬停主菜单时如何显示子菜单:

当前使用的代码:

//<div id='cssleftNav'>
     <ul>
         <c:forEach var = "category" items="${categories.rows}">
         <li class='has-sub'>                                            
         <a href="category?${category.id}"><span>${category.name}
         </span></a>            
         <ul>                                               
             <c:forEach var = "subcategory" items="${subcategories.rows}">
             <li>
                <a href="category?${subcategory.id}"><span>${subcategory.name}
                </span<</a>
             </li>
             </c:forEach>
         </ul>
         </li>
        </c:forEach> 
  </cssleftNav

请帮忙。我已经有一段时间了。

4

1 回答 1

0

你的数据模型很奇怪。您似乎松散了${categories}${subcategories}并且没有以某种方式相互引用。

您需要确保它们相互引用。最终,您希望得到如下结果:

<ul>
    <c:forEach items="${categories}" var="category">
        <li>
            <a href="category?id=${category.id}">${category.name}</a>
            <ul>
                <c:forEach items="${category.categories}" var="subcategory">
                    <li>
                        <a href="category?id=${subcategory.id}">${subcategory.name}</a>
                    </li>
                </c:forEach>
            </ul>
        </li>
    </c:forEach>
</ul>

这将需要一个模型,如:

public class Category {

    private Long id;
    private String name;
    private List<Category> categories;

    // ...
}

顺便说一句,拥有rows财产也很奇怪。${categories}应该只是List<Category>您从数据库中获得的。

于 2013-02-04T03:09:13.970 回答