2015-06-30 245 views
0

我試圖根據從另一個下拉列表中選擇的先前值來獲取下拉列表的值。我能夠從servlet Java類調用和值返回到servlet的,但它沒有得到傳承給jsp頁面將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> 

的平變化值在區域調用這個函數

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 box中獲取VPC的值。我在這裏先向您的幫助表示感謝。

+0

您的JSP中有一個尾隨' - %>'。 AJAX回調對收到的響應沒有任何作用。它必須用響應中收到的那個替換現有的選擇框。 –

+0

我已刪除該尾隨。它仍然沒有工作。 – daivik

+0

準確定義「不工作」。你期望會發生什麼,而發生什麼呢? –

回答

0

當前,servlet中的工作流適用於同步請求,這需要servlet在HTTP響應中返回整個HTML以供瀏覽器呈現。然而,在我看來,你的意圖不是查詢servlet來獲取VPC列表,而是試圖使用AJAX異步構造查詢。

因此,我的建議是讓servlet以某種格式(例如JSON)返回VPC列表。在success回調中,您應修改DOM以插入您收到的列表。

+0

我不知道JSON。你能告訴我怎麼做。 – daivik

+0

您需要構建列表的JSON表示(使用例如標準JEE JSON API),並使用'response'對象將這樣的JSON發送回瀏覽器。 –

+0

如何訪問jsp頁面中的JSON數組並放入下拉框 – daivik