如何在JSP中创建级联下拉框?

时间:2011-01-21 06:05:31

标签: java ajax jsp

我尝试在SO中搜索我的问题,并找到.Net的大部分答案,而不是Java。 所以再次提出这个问题。

如何在JSP中创建级联下拉列表?即第二个下拉框的值应取决于第一个下拉框的值。应从数据库中提取这些值。我知道我应该使用AJAX,但我不知道如何做到这一点。如果有人可以提供帮助,那将会有很大的帮助。

1 个答案:

答案 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函数传递参数。