JSTL显示与主键关联的外键值

时间:2013-02-03 07:38:14

标签: jquery sql jstl

我在尝试使用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

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

1 个答案:

答案 0 :(得分: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>