下拉JSP数据库存储过程没有servlet

时间:2017-11-10 23:03:21

标签: java jsp servlets

所以,就是这样:在我的JSP页面上,我想使用存储过程从数据库填充下拉列表,该存储过程期望作为参数选择在两个无线电中选择的国家的id(即,如果您选择美国,该国的国家已经填补,如果你选择尼加拉瓜,反之亦然)。正如我的问题所说,它没有使用servlet,问题在于我无法选择收音机的value(如果我传递一个数字而不是变量" country&#34 ;,组合已填满)。

这是我的代码:

<label for="state">State</label>
<select name="ddStates" id="ddStates">  
    <option value="-1">Select State...</option>       
    <%
    try {
        Class.forName("com.mysql.jdbc.Driver");
        Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/nextnetcustomers", "root", "root");
        int country = Integer.parseInt(request.getParameter("cntry"));
        StringBuilder sb = new StringBuilder();
        ResultSet rs = null;
        PreparedStatement ps = null;
        sb.append("{call SP_CATSTATES_LIST(?)}");
        ps = conn.prepareCall(sb.toString());
        ps.setInt(1, country);
        rs = ps.executeQuery();
        while (rs.next()) {
            %>
            <option value="<%=rs.getInt("IDCATSTATES")%>"><%=rs.getString("DESCRIPTION")%></option>
            <%
        }
    } catch (Exception ex) {
        ex.printStackTrace();
        out.println("Error " + ex.getMessage());
    }
    %>
</select>

1 个答案:

答案 0 :(得分:0)

解决方案:好吧,最后我不得不使用带有JSON数据和ajax函数的servlet,如果其他人遇到这个问题,以下是一个简单的解决方案:

ajax功能:

$(document).ready(function () {
            $('#USA').change(function (event) {
                var id = $("#USA").val();
                $.get('PopulateCustomersTable', {
                    idcontry: id
                }, function (response) {
                    var select = $('#ddStates');
                    select.find('option').remove();
                    $.each(response, function (index, value) {
                        $('<option>').val(value.IdState).text(value.Description).appendTo(select);
                    });
                });
            });
            $('#NIC').change(function (event) {
                var id = $("#NIC").val();
                $.get('PopulateCustomersTable', {
                    idcontry: id
                }, function (response) {
                    var select = $('#ddStates');
                    select.find('option').remove();
                    $.each(response, function (index, value) {
                        $('<option>').val(value.IdState).text(value.Description).appendTo(select);
                    });
                });
            });
        });

收音机:

<input type="radio" id="USA" name="cntry" value="1"/>USA 
<input type="radio" id="NIC" name="cntry" value="2"/>NICARAGUA

选择下拉列表:

<select name="ddStates" id="ddStates" required>  
   <option value="">Select State...</option>                                                       
</select>