Основываясь на моем вопросе , опубликованном несколько дней назад, я понял, что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, таком как упомянутый здесь ?