我正在使用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吗?
答案 0 :(得分:1)
好吧,我认为你将无法逃避javascript :-)。您可以使用按钮进行完整提交。加载第二个组合,用户选择第二个组合。这将是一个非常奇怪的用户体验: - )。
您的问题可以通过两种方式解决:
最好使用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重新加载组合框