一尘不染

在JSP中从JavaScript / jQuery调用后端Java方法

jsp

我有一个JSP,其中有一个select包含实体种类名称的列表。当我选择一种实体类型时,我需要select用所选实体类型的字段名称填充另一个列表。为此,我在onchange事件上调用了JavaScript函数。

在JavaScript方法中,我需要在后端调用一个方法,该方法返回arraylist,其中包含所选实体类型的字段名称。

有无Ajax时如何调用该方法?另外,我如何用arrayList?动态填充第二个选择列表?


阅读 668

收藏
2020-06-08

共1个答案

一尘不染

我将描述两种方法:使用/不使用AJAX。

  1. 如果要进行 同步表单提交 ,则需要将onchangeevent 附加到第一个select元素:
        <select name="select-one" id="select-one" onchange="this.form.submit()">
        <option value="1">1</option>
        <option value="2">2</option>
        <option value="3">3</option>
    </select>

完成这种方式后,将提交表单,并且第一个选择选项将以形式提供request.getParameter("select- one"),您将基于该选项提供第二个下拉列表的数据,通常将其转发到JSP。

  1. 如果要 通过AJAX 检索列表并重新填充另一个下拉列表,则可以发送AJAX请求并在回调函数中处理返回的数据:
        var val = $('#select-one option:selected').val();
    $.ajax({
        url: "servletURL",//servlet URL that gets first option as parameter and returns JSON of to-be-populated options
        type: "POST",//request type, can be GET
        cache: false,//do not cache returned data
        data: {one : val},//data to be sent to the server
        dataType: "json"//type of data returned
    }).done(function(data) {
        var second = $("#select-two");
        $.each(data, function() {
            options.append($("<option />").val(this.value).text(this.label));
        });
    });    

这样,第二个下拉列表将被重新填充而无需刷新页面。

2020-06-08