Добрый день! Изучаю jquery(Autocomplete), и столкнулся с такой проблемой. если у меня список значений в заданном массиве в скрипте то все работает:
<script type="text/javascript">
$(function() {
var tags = ["tag1", "tag2", "atag3", "btag4", "aaa5"];
$('#acInput').autocomplete({
source: tags
})
});
</script>
Но мне необходимо получать данные из коллекции java, например обратившись к контроллеру по ссылке. Читал, что с коллекцией java не будет работать, и как вариант перевести коллекцию в json формат.
Пробовал писать использовать такой контроллер:
@RequestMapping(value = "/tags", method = RequestMethod.GET)
public String getTags() {
List<Tag> tags = (List<Tag>) tagService.getAll();
List<String> tagsName = new ArrayList<String>();
for (Tag tag : tags){
tagsName.add(tag.getName());
}
String jsonStr = new Gson().toJson(tagsName);
return jsonStr;
}
и в скрипте указывал ссылку на контроллер:
$(function() {
$('#acInput').autocomplete({
source: '/tags'
})
});
и ничего не работает. Помогите пожалуйста разобраться, как это все запустить. И какие вообще есть варианты передавать данные в скрипт из коллекции java, чтобы это все работало? К примеру, у меня на этой jsp есть доступ к необходимой коллекции, могу ли я ее использовать в скрипте для решения данной задачи не вызывая отдельно метод контроллера?
Заранее прошу прощение, может не совсем понятно изложил проблему.
Спасибо
Дополнение: переписал метод getTags @RequestMapping(value = "/tags", method = RequestMethod.GET) public @ResponseBody String getTags() { List tags = (List) tagService.getAll(); List tagsName = new ArrayList(); for (Tag tag : tags){ tagsName.add(tag.getName()); } String jsonStr = new Gson().toJson(tagsName); System.out.println(jsonStr); return new Gson().toJson(tagsName); }
автоподстановка теперь работает, но показывает все теги. То есть сортировка не работает, а просто вываливает все данные. Как запустить сортировку?
У вас в коде не хватает галочек для tags
<script type="text/javascript">
$(function() {
$('#acInput').autocomplete({
source: 'tags'
})
});
</script>
переписал метод
@RequestMapping(value = "/tags", method = RequestMethod.GET) public @ResponseBody String getTags() {
List<Tag>tags = (List<Tag>) tagService.getAll();
List<String>tagsName = new ArrayList<String>();
for (Tag tag : tags){
tagsName.add(tag.getName());
}
String jsonStr = new Gson().toJson(tagsName); System.out.println(jsonStr);
return new Gson().toJson(tagsName); }
автоподстановка работает. Вылезли другие проблемы но это наверное тема другого вопроса.
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Как сделать чтобы когда нажимаем второй раз на кнопку, то блок плавно возвращался назад? jquery использовать нельзя, проект делается на ангуляре
Я пытаюсь делать кое-какое веб-приложение и мне нужно, чтобы текстуры всех элементов гуи хранились в виде одного изображения (скина)С одной...
Есть контейнеры с свойством float:leftпод каждым контейнеромКонтейнер с описанием при добавлении больше одного слова
Имею сайт на ajax, и при переходах по страницам на мобильных устройствах заметил, что контент слишком резко появляется, и блоки side-bar из-за этого...