当前位置: 首页 > 知识库问答 >
问题:

如何在下拉列表中显示相关的子类别,基于在第一个下拉列表中使用servlet和jsp在netbean中选择类别?

夏华藏
2023-03-14

我正在使用netbeans和mysql用java制作一个web应用程序。数据库“Categroy”和“SubCat”中有两个表。还有实体类和会话bean来从数据库中提取数据。jsp表单中有两个下拉列表。我希望当在第一个下拉列表中选择一个类别时,它的类别id在servlet中消失,并且从那里开始,只有相关子类别的列表显示在第二个下拉列表中。我怎么能做到?

我的JSP代码如下

    <form action="<c:url value='submit_site'/>" method="POST">
    <table border="0">
        <tbody>
               <tr>
                <td><label for="cat">Category</label></td>
                <td> 
                    <select name="category">

                        <c:forEach var="cat" items="${categories}">
                            <option name="catId" value="${category.id}">${cat.id}. ${cat.catName}</option>
                        </c:forEach>
                    </select> 
                </td>
            </tr>   
            <tr>
                <td><label for="SuCat">SubCategory</label></td>
                <td>
                    <select name="subcat">
                        <option>Select...</option>
                        <c:forEach var="subcat" items="${subCategories}">
                            <option name="subId" value="${subcat.subId}">${subcat.subCatName}</option>
                        </c:forEach>
                    </select>
                </td>
            </tr>
            <tr>
                <td colspan="2">
                    <input type="submit" 
                           value="Submit"/>
                </td>
                <td colspan="2">
                    <input type="reset" 
                           value="Reset" />
                </td>

            </tr>
        </tbody>
    </table>

</form>

数据库中的所有类别都显示在第一个下拉列表中,但从第一个下拉列表中,选定类别的id没有进入servlet,子类别也没有显示在第二个下拉列表中。如何在第二个下拉列表中获取相关子类别?请引导我,我从两个星期以来一直在这方面努力。

我在网上搜索过,但无法解决我的困惑。下拉列表中有javascripts,但我无法理解这些脚本。我可以不用javascript cod吗?

共有1个答案

谭玄天
2023-03-14

好吧,我认为您将无法逃离javascript:-)。您可以使用按钮进行完整提交。加载第二个组合,用户选择第二个组合。这将是一种非常奇怪的用户体验:-)。

您的问题可以通过两种方式解决:

  • javascript整页提交
  • AJAX调用

AJAX调用更可取,也更友好。完整提交更容易实现,但页面将闪烁并重新加载内容。

完整提交可以使用提交在组合框中选择选项(如果文档中只有一个表单):

<select name="subcat" onchange="document.forms[0].submit()">
  <option>Select...</option>
  <c:forEach var="subcat" items="${subCategories}">
    <option name="subId" value="${subcat.subId}">${subcat.subCatName}</option>
  </c:forEach>
</select>

对于AJAX调用,您可以使用XmlHttpObject自己实现,但这是在重新发明轮子;坚持使用jquery之类的JS框架。

更新:对不起,我把链接按错误的顺序发布了。这是一个将jQuery与servlet一起使用的示例。基本上,您可以使用JSON(或超文本标记语言,如本链接所示)序列化整个子类别列表,然后使用javascript重新加载组合框

 类似资料: