gpt4 book ai didi

java - 如何在netbeans中使用servlet和jsp根据第一个下拉列表中的类别选择在下拉列表中显示相关子类别?

转载 作者:太空宇宙 更新时间:2023-11-04 07:51:54 28 4
gpt4 key购买 nike

我正在使用 netbeans 和 mysql 在 java 中制作一个 Web 应用程序。数据库中有两个表“Categroy”和“SubCat”。并且有实体类和 session 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,并且子类别不会显示在第二个下拉列表中。我如何在第二个下拉菜单中获取相关子类别?请指导我,我已经坚持了两周了。

我在网上搜索过,但无法解决我的困惑。有用于下拉列表的 JavaScript,但我无法理解这些脚本。我可以在不使用 javascript cod 的情况下做到这一点吗?

最佳答案

好吧,我认为你将无法摆脱 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 框架。

<小时/>

更新:抱歉,我以错误的顺序发布了链接。 This是一个将 jquery 与 servlet 结合使用的示例。基本上,您可以使用 JSON(或 HTML,如 this link )序列化整个子类别列表,然后使用 javascript 重新加载组合框

关于java - 如何在netbeans中使用servlet和jsp根据第一个下拉列表中的类别选择在下拉列表中显示相关子类别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14318828/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com