jsp中的从属下拉列表

时间:2013-02-02 08:33:34

标签: java javascript ajax jsp

我的JSP中有两个下拉列表。一个是topcategories,另一个是subCategories。当我的JSP页面最初加载时,它将在第一个下拉框中仅包含topcategories列表,第二个下拉列表将为空。当我从第一个下拉列表中选择topcategory时,应在第二个下拉列表中填充相应的子类别。在我初始加载jsp本身的过程中,我将获得同时包含topcategory和subcategory列表的数据库。因此,当选择topcategory时,我应该选择topcategory的值,并且我必须将它与databean中存在的topcategory列表进行比较,并且需要在第二个下拉列表中填充相应的子类别。怎么做这个PLZ帮助我。提前致谢。我已经分享了我的代码供参考。

<div class="selectbox01">
                <select name="make" id="make" onchange="loadModel()">

                    <c:forEach var="topCategory" items="${catalog.topCategories}" varStatus="status">
                    <option selected="selected"></option>
                    <option value="${topCategory.categoryId}"><c:out value="${topCategory.description.name}"/></option>
                    </c:forEach>
                </select>
            </div>
            <c:set var="make" value="${WCParam.make}"/>
            <div class="selectbox01">
                <select name="model" id="model">
                <option selected="selected"></option>
                <c:forEach var="topCategory" items="${catalog.topCategories}" varStatus="status">
                <c:if test="${topCategory.categoryId == make}">
                <c:forEach var="subTopCategory" items="${topCategory.subCategories}" varStatus="status2"> 
                    <option value="${subTopCategory.categoryId}">
<c:out value="${subTopCategory.description.name}"/></option>
                   </c:forEach>
                   </c:if>
                     </c:forEach>

                </select>
            </div>

1 个答案:

答案 0 :(得分:0)

一种方法是创建一个表示“catalog”bean的javascript对象。然后写一个绑定到topcategories下拉列表的onchange处理程序,它使用javascript中的“catalog”对象来获取子目录的javascript数组。

将其分解为步骤:

第1步: 创建一个表示“catalog”bean的javascript对象: 一种简单的方法是覆盖Catalog bean的toString()方法并返回表示bean的JSON对象。或使用Jackson api将Catalog对象转换为JSON String。完成后,将json保存在javascript变量中。例如在你的jsp中写下这个:

<script type="text/javascript"> var catalogJson = ${catalog};</script>

第2步: 在javascript中编写loadModel函数,该函数使用“catalogJson”变量来获取子目录并在其他下拉列表中填充它们。

我已经摒弃了一些细节,但大多数细节都是直截了当的。