将servlet值传递给jsp页面

时间:2015-06-30 07:30:06

标签: java jsp servlets

我正在尝试根据从另一个下拉列表中选择的先前值将值获取到下拉列表。我能够从servlet调用java类,并将值返回给servlet,但它没有传递给jsp页面

jsp页面部分(index.jsp)

<select id="region" name="region" class="form-control" onchange="getgroups()" required="required" >
<option value="" default selected>Select region</option>
<option value="region1">region1</option>
<option value="region2">region2</option>
<option value="region3">region3</option>
<option value="region4">region4</option></select>

region中的onchange值调用此函数

function getgroups(){

var j = document.getElementById("region");
var s = document.getElementById("secret_key");
var a = document.getElementById("access_key");

   var output = $.ajax({
     type: 'POST',
     url: 'http://localhost:8066/VMMigratorNew/ec2util',
     data: {"region":j.value,
            "secret_key":s.value,
            "access_key":a.value,
            },
     success: function(response) {
         return output.responseText;
     }

});

}

并在servlet中

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        String region = request.getParameter("region");
        String secretKey = request.getParameter("secret_key");
        String accessKey = request.getParameter("access_key");




            List<String> vpcs = RunEc2Command.getVPCForUSer(AWS_ACCESS_KEY, AWS_SECRET_KEY, region);

            if(vpcs != null && vpcs.size() > 0) {
                                request.setAttribute("vpclist", vpcs);
            }

        request.getRequestDispatcher("/index.jsp").forward(request, response);
    }
}

并且在同一个index.jsp页面中,我试图在index.jsp本身的下拉框中显示列表值。

          <select id="vpc" name="vpc" class="form-control" placeholder="Choose VPC"  >
                                        <option value="" default selected>Select VPC</option>

                                            <c:forEach items="${vpclist}" var="vpcs">    
                                                 <option>
                                                   ${vpcs}
                                                 </option>
                                            </c:forEach> 
                                    </select> 

从区域下拉框中选择值后,我需要在drop dron框中获取VPC的值。感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

目前,servlet中的工作流适用于同步请求,这要求servlet在HTTP响应中返回整个HTML以供浏览器呈现。但是,在我看来,您的意图不是查询servlet以获取VPC列表,而是尝试使用AJAX异步提出查询。

因此,我的建议是让servlet以某种格式(例如,JSON)返回VPC列表。在success回调中,您应该修改DOM以插入您收到的列表。