2013-10-10 78 views
0
//struts.xml 
    <package name="ajax" namespace="/" extends="struts-default,json-default"> 
     <action name="CheckUserAction" class="com.controller.ajax.AjaxAction"> 
      <result type="json"> 
      <param name="root">jsonData</param> 
      </result> 
     </action> 
    </package> 



    //Action Class 
public class AjaxAction extends ActionSupport { 
private String capacity; 
private String greeting; 
private List<String> countryList; 
private Map<String, Object> jsonData; 
public String execute() throws Exception { 
    jsonData = new LinkedHashMap<String, Object>(); 
    greeting = "HI " + "AMIT"; 
    countryList = new ArrayList<String>(); 
    countryList.add("US"); 
    countryList.add("UK"); 
    countryList.add("Russia"); 
    jsonData.put("capacity", this.getCapacity()); 
    jsonData.put("countryList", countryList); 
    jsonData.put("countryMap", countryMap); 
    jsonData.put("greeting", greeting); 
    return SUCCESS; 
} 
//Getter and setters 

}如何使用jQuery返回列表填充struts 2 ui選擇標籤?

//Script 
$(document).ready(function() { 
     $("#capacity").change(function() { 
      var capacity = $("#capacity").val(); 
      $.getJSON('CheckUserAction.action', { 
       capacity : capacity 
      }, function(data) { 
       $('#abc').append('<br>' + data.capacity); 
       $('#abc').append('<br>' + data.countryList); 
       $('#xyz').attr('value', data.greeting); 
       $('#pqr').attr('list', data.countryList); 
      }); 
      return false; 
     }); 
    }); 





//JSP code 
<table border="0"> 

     <tr> 
      <td><s:label for="capacity" value="Capacity" /></td> 
      <td><s:textfield name="capacity" placeholder="100" id="capacity" 
        value="abc"></s:textfield></td> 
     </tr> 
     <tr> 
      <td><s:label for="dynamic" value="Ajax" /></td> 
      <td><s:textfield name="dynamic" value="learning" id="xyz"></s:textfield></td> 
     </tr> 
     <tr> 
      <td><s:label for="flightId" value="Flights" /></td> 
      <td><s:select list="#{'1':'1' }" name="fightId" id="pqr"></s:select></td> 
    </tr> 
</table> 
<div id="abc">Initial</div> 

我想填充列表(ID:PQR)使用JSON返回的列表countryList,我能夠改變屬性的文本字段的值(ID:XYZ),我還追加它的div (id:abc)但我無法更改struts選擇標籤的屬性列表。 它與如何在HTML中填充struts標記有關。

另外我不使用struts-jquery插件也不使用dojo插件。 謝謝

+0

請參閱http://stackoverflow.com/q/815103/1700321。 –

回答

0

你在data.countryList中接收到什麼樣的數據?你可以發佈這些數據嗎?我希望有沒有名爲列表下拉的attr屬性。 List屬性由Struts提供。您可以撰寫的數據下拉像

<option value="1">India</option> 
<option value="2">United States</option> 
<option value="3">United Kingdom</option> 

,如果您要發送新的列表,你可以做填補countryList一樣,

$('#pqr').html(composed_country_list); 

否則要更新counrty意味着你可以追加數據到下拉像,

$('#pqr').append(composed_country_list); 

讓我知道,如果這有助於..

0

的followi NG代碼爲我工作

 //JSP 
    <s:select list="{}" name="fightId" id="pqr"></s:select> 

腳本文件

$(document).ready(function() { 
    $("#capacity").change(function() { 
     var capacity = $("#capacity").val(); 
     $.getJSON('CheckUserAction.action', { 
      capacity : capacity 
     }, function(data) { 

      countryListItem = data.countryList; 
     }); 
     return false; 
    }); 
});  




    var pqr = $('#pqr'); 
    pqr.find('option').remove(); 
    pqr.append('<option value=-1>--Select--</option>'); 
    for(var i = 0; i < countryListItem .length; i++) { 
      var opt = document.createElement('option'); 
      opt.innerHTML = countryListItem [i]; 
      opt.value = countryListItem [i]; 
      pqr.append(opt); 

     } 

使用的JavaScript創建選項屬性來填充列表。 struts select標籤實際上在內部生成這種HTML。

相關問題