我正在使用netbeans和mysql在java中制作web应用程序。在数据库"category"one_answers"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,子类别没有显示在第二个下拉列表中。我如何在第二个下拉列表中获得相关的子类别?请引导我,我已经在这两个星期了。
我已经在网上搜索,但不能解决我的困惑。有下拉列表的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框架。
更新:对不起,我把链接贴错了顺序。这是一个使用jquery和servlet的示例。基本上,你可以使用JSON(或HTML,如本链接)序列化整个子类别列表然后使用javascript