Для автозаполнения jqueryui вам просто нужно задать поле ввода с помощью специального класса "автозаполнение":
<input type="text" class="ui-state-default autocomplete" name="object.name" value="" />
Затем вы можете использовать этот код jquery для настройки автозаполнения
$(document).ready(function(){
$('input.autocomplete').each( function() {
var $input = $(this);
// Set-up the autocomplete widget.
$(this).autocomplete({
minLength: 3,
source : function(req, resp) {
$.getJSON("@{MyController.getObjects()}?term=" + req.term , req, function(data) {
var suggestions = [];
$.each(data, function(i, val) {
var obj = {};
obj.label = val.name;
obj.id = val.id;
suggestions.push(obj);
});
resp(suggestions);
});
}
});
});
});
Здесь вы вызываете метод getObjects на контроллере «MyController».Этот метод выглядит как
public static void getObjects(final String term) {
renderJSON(MyObject.findByName(term, AUTOCOMPLETE_MAX));
}
, где "findByName" - это метод в объекте вашей модели, который ищет объекты по имени.AUTOCOMPLETE_MAX - это const, определяющий максимальное количество объектов, которые вы хотите получить.
Метод контроллера getObjects возвращает объект json, который называется "val" в javascript.Обратите внимание, что вам необходимо отобразить значения из этого объекта в объект с «меткой» и «идентификатором», которыми можно управлять с помощью автозаполнения jquery.
С этим решением вы получите имя объекта в вашемметод проверки контроллера.Мне нравится это решение, потому что вы можете искать объект по имени в контроллере, позволяя пользователю выбрать что-либо без использования списка автозаполнения.Затем вы подтвердите имя в методе проверки контроллера.
У вас есть другое решение на основе идентификатора на сайте lunatech: http://www.lunatech -research.com / archives / 2011/07/05 / jquery-щ-Аякс-автозаполнения-playframework