我尝试在SO中搜索我的问题,并找到.Net的大部分答案,而不是Java。 所以再次提出这个问题。
如何在JSP中创建级联下拉列表?即第二个下拉框的值应取决于第一个下拉框的值。应从数据库中提取这些值。我知道我应该使用AJAX,但我不知道如何做到这一点。如果有人可以提供帮助,那将会有很大的帮助。
答案 0 :(得分:1)
您需要下载JQuery(JavaScript框架)并将其包含在HTML的头部。
<script type="text/javascript" src=PathToJquery.js></script>
在第一个下拉列表的OnChange函数内调用该函数来填充后续下拉列表。
$(document).ready(function() {
$('#DDIdParent').change(function() { populateChildDropdown('DDIdParent'); });
});
该函数如下:
function populateChildDropdown(ddId) {
var dd = $('#' + ddId);
$.getJSON('json/mapping?dd=' + ddId, function(opts) {
$('>option', dd).remove(); // Clear old options first.
if (opts) {
$.each(opts, function(key, value) {
dd.append($('<option/>').val(key).text(value));
});
} else {
dd.append($('<option/>').text("Please select the parent DD"));
}
});
}
在Servlet的doGet方法中,您将获得这样的代码,以便从数据库中获取后续下拉列表的值作为JSON字符串:
Map options = yourDao.callDatabase(parameter);
String json = new Gson().toJson(options);
res.setContentType("application/json");
res.setCharacterEncoding("UTF-8");
res.getWriter().write(json);
您需要将json / mapping映射到web.xml中的servlet。如果需要,您还可以从jquery函数传递参数。