Список выбора не заполняется правильными данными JSON - PullRequest
0 голосов
/ 18 августа 2011

Мне все еще нужна помощь с моим динамическим списком выбора.

У меня есть сценарий:

function getMains(element) {
var subjectgroup = element.value;

  var select_element;

  select_element = '#mains';


$(select_element).html('');
$(select_element).append($("<option></option>").attr("value","none").html(""));
 //   $(select_element).append($("<option></option>").attr("value","all").html(""));
   if (element.value==''||element.value=='none'||element.value=='all')
  return;
 $.ajax({
  type: 'GET',
  url: 'getmainsubjects.html',
  dataType: 'json',
  data: ({id:data}),
  success: function(data) {
    $.each(function(data) {
      if (!subjectgroup) {
                                                                                                                                      $(select_element).append($("                                                                  <option>").attr("value",data.id,"items",data).html(data.description));
   } else {
    $(select_element).append($("<option>").attr("value",data.id,"items",data).html(data.description));
}

    });
  },
  error: function(data) {
    //alert("This failed!");
       }
     });

   }  

 $('select#subjectgroups').ready(function(){
  $("select#subjectgroups").find("option").each(function(i) {
  if ($(this).val()!='all'&&$(this).val()!='none') {
    $(this).append( " " + $(this).val() );
  }
});

});

   $('select#mains').ready(function(){
  $("select#mains").find("option").each(function(i) {
    if ($(this).val()!='all'&&$(this).val()!='none') {
     $(this).append( " " + $(this).val() );
    }
 });
});

И метод:

@RequestMapping(method = RequestMethod.GET, params="id", value = "/getmainsubjects")
     @ResponseBody
   public String getMainSubjects( @RequestParam("id") int id) {


    List<MainSubjectsSimple> mains = database.getMainSubjectsSimple(id,   Localization.getLanguage());
    //System.out.println(mains.size());
    HashMap hm = new HashMap();



     for (MainSubjectsSimple mss: mains) {
        try {

            hm.put("id",mss.getId());
            hm.put("description", mss.getDescription());

        } catch (NoSuchMessageException e) {
            //hm.add(Integer.valueOf(mss.getId().toString(), translate(mss.getTranslationCode(),new Locale("fi")));
        }
    }
    String json = null;
    String _json = null;

    try {
        _json = HtmlEntityEncoder.encode(JsonUtils.javaToStr(hm));

    } catch (Exception e) {

    }
    return _json;
}

Я думаю, что я не зацикливаю правильные значения. Основной список выбора должен быть заполнен на основе другого списка выбора, чтобы идентификатор объекта был значением, а описание - меткой. Прямо сейчас вызов URL, записанного в скрипте, возвращает только первый объект как json, а не все, и объекты не отображаются в списке выбора сети.

1 Ответ

0 голосов
/ 22 августа 2011

Вы снова и снова кладете одни и те же ключи на карту хм :

HashMap hm = new HashMap ();

 for (MainSubjectsSimple mss: mains) {
    try {

        hm.put("id",mss.getId());
        hm.put("description", mss.getDescription());

    } catch (NoSuchMessageException e) {
        //hm.add(Integer.valueOf(mss.getId().toString(),

translate (mss.getTranslationCode (), new Locale ("fi")));}}

Вам необходимо использовать разные ключи для каждой записи в mains или использовать коллекцию (например, ArrayList) из Maps .Пример последнего:

List hms = new ArrayList();

     for (MainSubjectsSimple mss: mains) {
        try {
            HashMap hm = new HashMap();

            hm.put("id",mss.getId());
            hm.put("description", mss.getDescription());

            hms.add(hm);

        } catch (NoSuchMessageException e) {
            //hm.add(Integer.valueOf(mss.getId().toString(), translate(mss.getTranslationCode(),new Locale("fi")));
        }
    }

    ...

    try {
        _json = HtmlEntityEncoder.encode(JsonUtils.javaToStr(hms));

    } catch (Exception e) {

    }

Я не знаком с используемыми вами утилитами (JsonUtils), поэтому это может не работать напрямую, но принцип в любом случае тот же.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...