Как лучше всего использовать Ext JS как часть веб-приложения на основе Java/Spring/Hibernate?
-
09-06-2019 - |
Вопрос
Мы хотим попробовать Ext JS в новом проекте.Существует ли какая-либо известная передовая практика для интеграции Ext JS с серверным приложением Java (Spring/Hibernate/JS)?Является ли DWR хорошим выбором для этого?
Решение
Моя команда использует Ext с DWR уже почти год и не может сказать ничего, кроме хорошего.Если вы примете этот подход, вы в конечном итоге будете использовать сгенерированные DWR классы JavaScript для отправки запросов на сервер.Часто это делается вместо использования классов Ext.Ajax и Ext.data.Connection.Когда вы используете класс, которому требуется Ext.data.Store (например,захват, поле со списком и т. д.), и вы хотите получить данные с сервера, вам нужно будет использовать прокси-сервер, который может подключаться к DWR.Сообщество пользователей, предоставившее Ext.ux.data.DWRProxy, сработало для нас безупречно: http://extjs.com/forum/showthread.php?t=23884.
Другие советы
Да, это возможно.
Я сделал то же самое с .NET:Пользовательский интерфейс в ext-JS, который взаимодействует с сервером через JSON.В мире .NET вы можете использовать DataContractSerializer (класс из WCF) или JavascriptSerializer (ASP.NET).
Я уверен, что в мире Java тоже есть несколько хороших сериализаторов JSON.я использовал Джабсорб (но недостаточно, чтобы дать вам исчерпывающую обратную связь).Похоже, что другие люди пытались:[текст ссылки][2]
[2]: http://extjs.com/forum/showthread.php?t=30759 форум ext-js
В нашем приложении мы создаем подкласс Экст.данные.DataProxy так:
var MyProxy = function(fn) {
this.fn = fn;
};
Ext.extend( MyProxy, Ext.data.DataProxy, {
load: function(params,reader,callback,scope,arg) {
this.fn(params,function(data) {
callback.call(scope,reader.readRecords(data),arg,true);
});
},
update: function() {}
});
Вы используете его с магазином следующим образом:
var store = new Ext.data.Store({
reader: myReader, proxy: new MyProxy(function(params,callback) {
// params are used for paging and searching, if you need it
callback(SomeService.getData(params));
})
// ...
});
В нашем реальном прокси-классе есть дополнительный код отладки и обработки ошибок, который я для простоты опустил.Вам также может потребоваться немного манипулировать вашими данными, чтобы Ext.data.JsonReader может справиться с этим, но это основная идея.SomeService — это имя JavaScript, указанное вами для любого bean-компонента, который вы предоставили в dwr.xml (или в вашей конфигурации Spring).
Взгляните на Grails, он хорошо сочетается с ExtJS.
Совершенно нормально создавать приложение с использованием Ext JS/DWR/Spring/Hibernate.