Вот мой фрагмент jsp
<form:form>
<form:input path = "state" id = "state"/>
</form:form>
<script>
$(document).ready(function() {
$("#state").autocomplete({
source: '${pageContext. request. contextPath}/getStatelist.htm'
});
});
</script>
Вот код контроллеров, который должен возвращать список состояний
@RequestMapping(value = "/getStatelist.htm", method = RequestMethod.GET, headers = "Accept=*/*")
public @ResponseBody List<String> getStateList(@RequestParam("term") String query) {
ApplicationContext context =
new ClassPathXmlApplicationContext("Beans.xml");
MasterJDBCTemplate dao =
(MasterJDBCTemplate)context.getBean("masterJDBCTemplate");
System.out.println(query);
System.out.println("Controller called");
List<String> fans = dao.getStateList(query);
return fans;
}
После запуска кода и ввода текста в текстовое поле контроллер вызывается, и я получаю правильные результаты, напечатанные на консоли. Пример прогона показан ниже.
g
Controller called
select state_desc from mst_state where state_desc like 'G%'
[GUJRAT, GOA]
gu
Controller called
select state_desc from mst_state where state_desc like 'GU%'
[GUJRAT]
guj
Controller called
select state_desc from mst_state where state_desc like 'GUJ%'
[GUJRAT]
Однако я не вижу ничего на лицевой стороне. Что мне не хватает? Что может быть причиной??
Согласно документации jQuery UI, возвращенные данные из службы REST должны быть JSON.
См. Http://api.jqueryui.com/autocomplete/#option-source
Чтобы учесть это, вместо указания атрибута Accept Header из "*/*" (т.е. headers = "Accept = */*") укажите "application/json" (т.е. headers = "Accept = application/json")