Возврат java.util.List из контроллера Spring MVC через AJAX с использованием Jackson

Основываясь на моем вопросе , опубликованном несколько дней назад, я понял, чтоSimpleFormControllerне подходит для обработки запросов Ajax. Поэтому я переношу свое приложение на аннотированные контроллеры.

Я пытаюсь вернуть java.util.Listиз базы данных Oracle, используя Spring MVC 3.0.2 с Hibernate через Ajax, используя Jackson 1.9.8(его загрузка страница)но я еще не работал с JSON ни в одной технологии. Я прочитал некоторые учебники/статьи, но я не мог понять, как возвращать такие сложные структуры данных и анализировать их с помощью JSON в Spring. Сначала я пытаюсь изучить JSON -как концепции.

В основном я пытаюсь, когда страна выбирается из поля выбора страны, штаты, соответствующие этой стране, должны быть заполнены из базы данных через Ajax. У меня нет четкого представления о том, как вернуть java.util.Listпо ответу Ajax, как его разобрать и снова использовать в коде Java.Я только до следующего уровня.

JS-код.

function getStates(countryId)
{
    $.ajax({
        datatype:"json",
        type: "POST",
        url: "/wagafashion/ajax/TempAjax.htm",
        data: "countryId=" + countryId,

        success: function(response)
        {
            $('#msg').html(response);
            $('#stateList').val('');
        },
        error: function(e)
        {
            alert('Error: ' + e);
        }
    });
}

Метод в классе контроллера Spring, который вызывается, когда Ajax-запрос делается для события onchangeв поле выбора страны.

@RequestMapping(method=RequestMethod.POST, value="ajax/TempAjax")
public @ResponseBody List getStateList(@ModelAttribute("tempBean") TempBean tempBean, BindingResult error, Map model, HttpServletRequest request, HttpServletResponse response)
{
    Session session=NewHibernateUtil.getSessionFactory().getCurrentSession();
    session.beginTransaction();
    Listlist=session.createQuery("from StateTable where country.countryId=:countryId order by stateId").setParameter("countryId", new BigDecimal(request.getParameter("countryId"))).list();

    session.flush();
    session.getTransaction().commit();
    return list;
}

Поле выбора состояния мне нужно заполнить списком состояний, возвращаемых ответом Ajax, используя цикл EL.


    Select

    
        
            
                ${row.stateName}
            
            
                ${row.stateName}
            
        
    



Я мог только успешно выполнить запрос и ответ Ajax. Ничего больше я не мог понять из этих руководств, найденных в Интернете. Точнее, как я могу использовать ответ Ajax в атрибуте itemsпредшествующего цикла , такого как items="${stateList}"?

Не могли бы вы дать мне подсказку/идею, как я могу вернуть список данных и использовать его в предыдущем цикле для заполнения поля выбора состояния? Не могли бы вы привести меня на несколько шагов вперед отсюда?

Я использую NetBeans 6.9.1 (, а не Eclipse ). В некоторых руководствах по проектам Marvan в Eclipse упоминалось, что файл pom.xmlтребуется настроить для включения(Зависимость Джексона ). В моем проекте в NetBeans нет такой вещи, как pom.xml. Нужно ли настраивать где-то в каком-то файле xml в NetBeans, таком как упомянутый здесь ?

9
задан Community 23 May 2017 в 11:45
поделиться