2014-11-06 2 views
2

Я новичок в Spring MVC. У меня есть два раскрывающихся списка в Jsp.One для страны и другого для штата. Как только я выберу страну из списка списка состояний, вы должны заполнить соответствующие списки.Динамически заполняет список вниз весной MVC

Мой Аякса Программа:

$("select#country").change(function() { 
    var val=$("#country").val(); 
    alert(val); 
    $.ajax({ 
    url : 'getstates', 
    method : 'get', 
    contentType: 'application/json', 
    data :{ 
       country : val 
      }, 

     success: function (data) { 
     alert("Success Response"+ data); 

     }, 

     error :function() 
     { 
       alert("error"); 
     }   

     }); 

Controller Программа My:

public @ResponseBody HashMap<String, String> 
    showstates(@RequestParam(required = false, value =  "") 
    String country,@Valid @ModelAttribute("employee")Login employee, 
    BindingResult result, ModelMap model) { 
    HashMap<String,String> statelist = new HashMap<String,String>(); 
    List<States> statelist = new ArrayList<States>(); 
    if (country.equals("UnitedStates")) { 
    statelist.put("Al","Alaska"); 
    statelist.put("Tl","Texas"); 
    } else if (country.equals("India")) { 
    statelist.put("Mh","Maharashtra"); 
    statelist.put("WB","West Bengal"); 
    statelist.put("KR","Karnataka"); 
    statelist.put("AP","Andhra Pradesh"); 
    statelist.put("TN","Tamil Nadu"); 
    } 
    return statelist; 
    } 

Я не получаю ответа от контроллера. Как получить доступ к hasmap в jsp. Пожалуйста помогите. Благодарю.

ответ

0

Я думаю, вы должны изменить свой метод, как показано ниже.

@RequestMapping(value = "/getstates", method = RequestMethod.GET) 
public @ResponseBody HashMap<String, String> showstates(@RequestParam(required = false, value = "") 
    String country,@Valid @ModelAttribute("employee")Login employee, 
    BindingResult result, ModelMap model) { 
    HashMap<String,String> stateMap = new HashMap<String,String>(); 
    //put your logic to add state on basis of country 

    return stateMap; 
    } 

Затем на JSP вы можете просто перебрать эту карту, как показано ниже.

<c:forEach items="${state.stateMap}" var="data" varStatus="status"> 
      <tr> 
       <td>${data.value}</td> 
      </tr> 
     </c:forEach> 
+0

Спасибо. Я использую форму Весны. Как получить доступ к Hashmap в jsp. И я использую jquery not jstl. – Niketa

+0

$ .ajax ({ URL: 'getstates', метод: 'получить', ТипСодержимого: 'JSON', данные: { страна: знач }, успех: функция (ответ) { \t оповещения ("привет"); опция вара = ''; если (ответ = NULL) { $ (ответ) .each (функция (индекс, значение) { опция = опция + '' }); $ ('# states'). Html (опции); – Niketa

+0

Выше моя функция JQuery для ac cess Hashmap. Я не могу получить доступ к именам состояний в списке. Извините, я не смог правильно отредактировать код. Не могли бы вы помочь мне получить доступ к государственным именам? Заранее спасибо – Niketa

0

сдвиг мое решение. потому что я застрял в одном и том же состоянии.

HTML страницы

$(document).ready(function() { // for client name 
 

 
\t \t $('#example').change(function(event) { 
 
\t \t \t var country = $("select#example").val(); // country = define value of selected option 
 
\t \t \t $.getJSON('ajaxAction0', { 
 
\t \t \t \t ptype : country 
 
\t \t \t }, function(data) { 
 
\t \t \t \t var select = $('#clientname'); 
 
\t \t \t \t select.find('option').remove(); 
 
\t \t \t \t $.each(data, function(key, value) { 
 
\t \t \t \t \t $('<option>').val(key).text(value).appendTo(select); 
 
\t \t \t \t }); 
 
\t \t \t }); 
 
\t \t }); 
 
\t });
<div> 
 
\t \t <select class="form-control" name="example" id="example"> 
 
\t \t \t <option value="0">ALL</option> 
 
\t \t \t <option th:each="dropdown : ${dropdown}" th:value="${dropdown.id}" 
 
\t \t \t \t th:text="${dropdown.tagName}"></option> 
 
\t \t </select> <select class="form-control" name="clientname" id="clientname"> 
 
\t \t \t <option value="0">ALL</option> 
 
\t \t \t <option th:each="dropd : ${drpdwn}" th:value="${dropd.id}" 
 
\t \t \t \t th:text="${dropd.tagName}"></option> 
 
\t \t </select> 
 
\t \t <button id="w-button-search" type="button">Search</button> 
 
\t </div>

код контроллера для первого выпадающего

@RequestMapping(value = "/dropdown", method = RequestMethod.GET) 
public String dropDown(Model model) { 
    List<Tag> data = new ArrayList<>(); 
    data.add(new Tag(1, "ruby")); 
    data.add(new Tag(2, "rails")); 
    data.add(new Tag(3, "c/c++")); 
    data.add(new Tag(4, ".net")); 
    data.add(new Tag(5, "python")); 
    data.add(new Tag(6, "java")); 
    data.add(new Tag(7, "javascript")); 
    data.add(new Tag(8, "jscript")); 
    model.addAttribute("dropdown", data); 
    return "dropDown"; 
} 

второго падения вниз код

Map <\string, string> udata = null; 
@RequestMapping(value = "ajaxAction0", method = RequestMethod.GET) 
public @ResponseBody Map<String, String> findAllAgencies(
     @RequestParam(value = "ptype", required = true) String ptype) { 
    udata = new HashMap<>(); 
    EntityManager em = entityManagerFactory.createEntityManager(); 
    em.getTransaction().begin(); 
    List<UserRecord> user = em 
      .createNativeQuery("Select id, name, email from user_Record where id = :uid", UserRecord.class) 
      .setParameter("uid", ptype).getResultList(); 
      for(UserRecord ur:user)  { 
     udata.put(ur.getEmail(), ur.getName()); 
    } 
    return udata; } 

надеюсь, что это поможет.

Смежные вопросы