2013-10-10 4 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 

}Как заполнить struts 2 ui выбрать тег json возвращенным списком, используя jquery?

//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: ПКР) с JSON возвращаемый список CountryList, я могу изменить значение текстового поля атрибута (ID: хуг), я также приложил его к Div (id: abc), но я не могу изменить список атрибутов тегов select. Связано ли это с тем, как тег struts заполняется в HTML.

Кроме того, я не использую плагин struts-jquery и плагин dojo. Thanks

+0

См. Http://stackoverflow.com/q/815103/1700321. –

ответ

0

Какие данные вы получаете в data.countryList? Можете ли вы опубликовать эти данные? Я надеюсь, что нет свойства attr с именем для выпадающего списка. Перечислите имущество, предоставленное 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

The followi нг коды работали для меня

 //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 фактически создает такой HTML-код внутри.