|
|
|
GXT 3 Dynamic Grid with Dynamic Column Model
|
|||
|---|---|---|---|
|
#18+
Всем добрый день Продолжаю изучать "новые" для меня возможности в GXT (GWT) сейчас появились несколько вопросов : Проект пример по ссылке https://github.com/isalnikov/GWTPortal.git и так что есть : интерфейс в котором я отображаю дерево таблиц проаннотированных своей аннотацией @PortalTable ( список получаю через ru.portal.controllers.RestController .tables() ) что хочу : по клику на имя таблицы в дереве (tableTreeView ) Хочу отображать ее содержимое в виде таблицы :) (tableGridView) Нашел что то похожее , https://www.sencha.com/forum/showthread.php?276826-GXT-3-Dynamic-Grid-with-Dynamic-Column-Model-and-Custom-ValueProvider-WORKING-100 но не могу понять как это реализовать без RPCService а через обычный REST JSON через RequestBuilder . Саму ColumnModel планирую получать ведя аннотацию @PortalColumn - которую буду ставить над полями , которые я хочу отобразить в админке . Сейчас же хочется получать все колонки и все данные таблицы ... как есть . еще вопросы : автор2) объясните мне популярно как сейчас делать такой финт - если мы что-то меняем (жмем например на ноду в дереве ... то по этому событию - автоматически перестраивается и перегружается таблица ) каким образом связать в одном классе два виджета? class AdminForm ( который содержит класс дерево и класс таблица) и как или черезчто связать и перебросить сообщение от дерева в таблицу ? автор3) вопрос о месиве из интерфейсов и джеренриков : объясните популярно вот это interface TableAutoBeanFactory extends AutoBeanFactory / зачем он нужен и какие в нем методы ? зачем мы создаем interface RecordResult и при этом на сервере объект должен начинаться с {records : []} почему нельзя сразу передать массив (зачем его нужно завернуть в { } и дать ключ records)???? автор3) как я могу создавать объекты на стороне сервера автоматически? не руками через JSONObject Я пробовал делать через Gson - но !!! клиентская честь ругается - т.к . все поля получаются экранированные \" т.е автоматическая генерация через Gson или через rest com.fasterxml.jackson.core ( когда сразу контроллер возвращает коллекцию объектов в виде json ) в данном подходе не применима??? автор4) как мне использовать возможности самого спринга к примеру я хочу вызвать метода с классом org.springframework.data.domain interface Pageable для постраничного выводы данных... как мне создать такой объект через GXT? ( раньше в RPC можно было указывать фильты и где сортировать данные и передавать этот объект на сервер ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2015, 16:32 |
|
||
|
GXT 3 Dynamic Grid with Dynamic Column Model
|
|||
|---|---|---|---|
|
#18+
Atum1, Про AutoBean, в TableAutoBeanFactory определяешь методы которые возвращают AutoBean<MyClass>, по сути указка компилятору создать кучу кода на основе твоего кода который будет отвечает за json<->MyClass(не массив ,как ты хочешь) Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. По поводу переброски событий, есть хороший fw MVP4G, там и модульность, и eventbus, и GIN. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2015, 10:17 |
|
||
|
GXT 3 Dynamic Grid with Dynamic Column Model
|
|||
|---|---|---|---|
|
#18+
0FDAtum1, Про AutoBean, в TableAutoBeanFactory определяешь методы которые возвращают AutoBean<MyClass>, по сути указка компилятору создать кучу кода на основе твоего кода который будет отвечает за json<->MyClass(не массив ,как ты хочешь) Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. По поводу переброски событий, есть хороший fw MVP4G, там и модульность, и eventbus, и GIN. Спасибо! я тут нашел статью аж за 2008 год... https://technophiliac.wordpress.com/tag/controller/ переделал все через spring javaconfig - и все заработало на RPC вызовах .... еще раз оценил RPC + DTO vs REST JSON + DTO и понял что проще добавить один слой на сервере для преобразования в java dto (pojo) компоненты и отправлять их через RPC на клиента (со всеми плюсами этой технологии) чем городить огород из rest сервисов , кучи интерфейсов и AutoBeanFactory.... может я и не прав ... но пока RPC + DTO смотрится намного привлекательнее ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2015, 10:09 |
|
||
|
GXT 3 Dynamic Grid with Dynamic Column Model
|
|||
|---|---|---|---|
|
#18+
Упс ! схватил ошибку Вопрос а как сам GXT объясняет GWT что у него есть свои классы??? Потому что при вызове метода processCall в классе как описано в статье с параметрами содержащими PagingLoadConfigBean получаю авторex = (com.google.gwt.user.client.rpc.IncompatibleRemoteServiceException) com.google.gwt.user.client.rpc.IncompatibleRemoteServiceException: Type 'com.sencha.gxt.data.shared.loader.PagingLoadConfigBean' was not assignable to 'com.google.gwt.user.client.rpc.IsSerializable' and did not have a custom field serializer. For security purposes, this type will not be deserialized. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. payload = (java.lang.String) 7|0|9| http://localhost:8080/application/|CDBF64E989C100D38F983FBC449E1AA8|ru.portal.gwt.gwtportal.client.GWTService|fetchTableOrViewData|com.sencha.gxt.data.shared.loader.PagingLoadConfig|java.lang.String/2004016611|com.sencha.gxt.data.shared.loader.PagingLoadConfigBean/38458988|java.util.ArrayList/4159755760|Users|1|2|3|4|2|5|6|7|50|0|8|0|9| ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2015, 16:18 |
|
||
|
GXT 3 Dynamic Grid with Dynamic Column Model
|
|||
|---|---|---|---|
|
#18+
Atum1, Вот такой вызов: Код: java 1. заставляет использовать LegacySerializationPolicy(почитайте), для которого необходимо чтобы классы наследовали com.google.gwt.user.client.rpc.IsSerializable, а com.sencha.gxt.data.shared.loader.PagingLoadConfigBean наследует java.io.Serializable. Попробуйте заменить на Код: java 1. Ну а дальше наверное упадет на клиенте, т.к. уже клиент не сможет deserialized Код: java 1. использует PortalLegacySerializationPolicy, возможно неизвестную клиенту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2015, 17:39 |
|
||
|
GXT 3 Dynamic Grid with Dynamic Column Model
|
|||
|---|---|---|---|
|
#18+
0FDAtum1, Вот такой вызов: Код: java 1. заставляет использовать LegacySerializationPolicy(почитайте), для которого необходимо чтобы классы наследовали com.google.gwt.user.client.rpc.IsSerializable, а com.sencha.gxt.data.shared.loader.PagingLoadConfigBean наследует java.io.Serializable. Попробуйте заменить на Код: java 1. Ну а дальше наверное упадет на клиенте, т.к. уже клиент не сможет deserialized Код: java 1. использует PortalLegacySerializationPolicy, возможно неизвестную клиенту. тут описано тоже самое ... https://www.sencha.com/forum/showthread.php?90592-Paging-Grid-Serialization-with-BasePagingLoadConfig-object но мне такое решение не помогло ... :( PortalLegacySerializationPolicy - shouldDeserializeFields Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. Ну а дальше наверное упадет на клиенте, т.к. уже клиент не сможет deserialized а что делать ??то ? одно починил - другое сломалось ... а как же оно работает по умолчанию? ведь работает и не ругается? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2015, 17:49 |
|
||
|
GXT 3 Dynamic Grid with Dynamic Column Model
|
|||
|---|---|---|---|
|
#18+
Если Вы хотите отказаться от файлов XXXXXXX.gwt.rpc, и PortalLegacySerializationPolicy переопределяет isInstantiable, где проверяется IsSerializable.class.isAssignableFrom(clazz)=>Serializable.class.isAssignableFrom(clazz) то можно Код: java 1. 2. 3. 4. ; и тогда можно не наследовать com.google.gwt.user.client.rpc.IsSerializable, а только Serializable. Но зачем, когда есть стандартная реализация с XXXXXXX.gwt.rpc файлами? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2015, 17:50 |
|
||
|
GXT 3 Dynamic Grid with Dynamic Column Model
|
|||
|---|---|---|---|
|
#18+
Теперь хочу именно использовать spring javaconfig + GXT + GWT RPC со всеми плюшками типа FilterPagingLoadConfig итд и когда мы честно прописываем все в web.xml - это рабоатет ...все примеры на этом основаны ...но стоило ввести GwtRpcController и все поломалось ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2015, 17:55 |
|
||
|
GXT 3 Dynamic Grid with Dynamic Column Model
|
|||
|---|---|---|---|
|
#18+
0FDЕсли Вы хотите отказаться от файлов XXXXXXX.gwt.rpc, и PortalLegacySerializationPolicy переопределяет isInstantiable, где проверяется IsSerializable.class.isAssignableFrom(clazz)=>Serializable.class.isAssignableFrom(clazz) то можно Код: java 1. 2. 3. 4. ; и тогда можно не наследовать com.google.gwt.user.client.rpc.IsSerializable, а только Serializable. Но зачем, когда есть стандартная реализация с XXXXXXX.gwt.rpc файлами? ничего не понял ??? я не хочу отказываться от стандартной реализации ... я пытаюсь побороть ошибку , которая возникает ...:( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2015, 18:00 |
|
||
|
GXT 3 Dynamic Grid with Dynamic Column Model
|
|||
|---|---|---|---|
|
#18+
Atum1 ничего не понял ??? я не хочу отказываться от стандартной реализации ... я пытаюсь побороть ошибку , которая возникает ...:( хорошо, тогда так, Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2015, 18:08 |
|
||
|
GXT 3 Dynamic Grid with Dynamic Column Model
|
|||
|---|---|---|---|
|
#18+
0FDAtum1ничего не понял ??? я не хочу отказываться от стандартной реализации ... я пытаюсь побороть ошибку , которая возникает ...:( хорошо, тогда так, [/src] а что дает? Код: java 1. 2. 3. 4. 5. а если так??? onAfterRequestDeserialized(rpcRequest); Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2015, 18:15 |
|
||
|
GXT 3 Dynamic Grid with Dynamic Column Model
|
|||
|---|---|---|---|
|
#18+
Atum1, Это дает то, что не надо переписывать processCall, если нужно // delegate work to the spring injected service , переопределите onAfterRequestDeserialized(rpcRequest). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2015, 18:25 |
|
||
|
GXT 3 Dynamic Grid with Dynamic Column Model
|
|||
|---|---|---|---|
|
#18+
0FDAtum1, Это дает то, что не надо переписывать processCall, если нужно // delegate work to the spring injected service , переопределите onAfterRequestDeserialized(rpcRequest). а как? совсем запутался что то ... вроде идея простая : взять и замапить все вызовы на урл спринга вида /**/rpc/gwt/ чтобы не указывать этот сервлет в мапинге web.xml потом взять то что пришло от клиента - а пришел свой формат в payload проанализировать его - выташить что него какой методв в каком интерфейсе вызвать , с какими параметрами ... вызвать , все это , ответ завернуть в такую же хрень и отправить на клиента ... и ведь работает и отлично же ... раньше ... и не нужно писать кучу ненужного кода по маршалингу json <-> pojo java/// итд ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2015, 18:30 |
|
||
|
GXT 3 Dynamic Grid with Dynamic Column Model
|
|||
|---|---|---|---|
|
#18+
Atum1, А разве мой вариант с "delegate" не работает? Должно работать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2015, 18:36 |
|
||
|
GXT 3 Dynamic Grid with Dynamic Column Model
|
|||
|---|---|---|---|
|
#18+
0FDAtum1, А разве мой вариант с "delegate" не работает? Должно работать. 0FD большое спасибо за советы . помогите - еще разок :) остался последний шаг: 1) я все перевел на GWT RPC https://github.com/isalnikov/GWTPortal.git 2) таблицы (имена таблиц и колонок ) грузятся в дерево 3) выбрав нужную таблицу в дереве загружается ее список колонок и отображается https://www.sencha.com/forum/showthread.php?276826-GXT-3-Dynamic-Grid-with-Dynamic-Column-Model-and-Custom-ValueProvider-WORKING-100 4) но не могу понять две вещи : как загрузить данные в таблицу???? 4.1) что это за часть в коде : YourCustomerClass ru.portal.gwt.gwtportal.client.DynamicGrid и ru.portal.gwt.gwtportal.client.DynamicGridView Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 4.2) и почему там везде тип M = Map<String,String> ??? 4.3) как описать метода на стороне сервера fetchTableOrViewData ? чтобы он для конкретной таблицы вернул все значения ? в каком виде все это должно вернуться? Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. PS чтобы все это "добить" хорошо бы добавить в setEastWidget() - динамически создаваемый editor- на основе данных таблицы (выбор строки таблицы - получение записи и ее редактирование). доступные для редактирования поля (колонки) и их типы ?!! и сохранять изменения в БД. тогда цикл будет завершен полностью... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2015, 14:36 |
|
||
|
GXT 3 Dynamic Grid with Dynamic Column Model
|
|||
|---|---|---|---|
|
#18+
UP получить все по типу можно в самом простом случае так через CriteriaBuilder : ( почему то не понимает // cq.select(root); ???? ) Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. вопрос как потом это отобразить для клиента??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2015, 16:42 |
|
||
|
GXT 3 Dynamic Grid with Dynamic Column Model
|
|||
|---|---|---|---|
|
#18+
Atum1, Разве компилятор не ругается на это ???: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. как получается User -> Map<String, String>? И очень много вопросов, вы что-то пишете а потом спрашиваете зачем это! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2015, 17:04 |
|
||
|
GXT 3 Dynamic Grid with Dynamic Column Model
|
|||
|---|---|---|---|
|
#18+
0FD спасибо вам за помощь и дискуссию ! остался один вопрос : как правильно сформировать данные в методе public PagingLoadResult<Map<String, String>> fetchTableOrViewData(PagingLoadConfig config, String tableOrViewName) чтобы они корректно отобразились на клиенте ... и так : я написал метод который возвращает список некоторых объектов с поддержкой постраничного вывода через CriteriaBuilder вот так но я не понимаю что он должен возвращать??? чтобы это можно было засунуть в PagingLoadResult<Map<String, String>> Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. что тут нужно написать ??? Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2015, 17:33 |
|
||
|
GXT 3 Dynamic Grid with Dynamic Column Model
|
|||
|---|---|---|---|
|
#18+
Atum1, вот код который должен работать , но получаю ошибку : findAll Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ошибка : Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2015, 12:42 |
|
||
|
GXT 3 Dynamic Grid with Dynamic Column Model
|
|||
|---|---|---|---|
|
#18+
Если прописать все в web.xml - ошибок нет . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2015, 17:11 |
|
||
|
GXT 3 Dynamic Grid with Dynamic Column Model
|
|||
|---|---|---|---|
|
#18+
Atum1Если прописать все в web.xml - ошибок нет . Вот это и странно. Код: java 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2015, 17:42 |
|
||
|
GXT 3 Dynamic Grid with Dynamic Column Model
|
|||
|---|---|---|---|
|
#18+
0FDAtum1Если прописать все в web.xml - ошибок нет . Вот это и странно. Код: java 1. https://github.com/isalnikov/GWTPortal.git откатил все на javaconfig - все проблема в том что нужно явно указать чем будет реализован map HashMap Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. так же переписал метод getKey in DynamicGrid: вместо // if (item instanceof <YourCustomerClass>) { // return ((YourCustomerClass) item).getId(); // } приходится разбирать строку - и вытаскивать из нее id для таблицы ... Вроде ошибок нет , данные приходят на клиента ....НО в таблице не отображаются ... и почему- то идет двойной вызов (видимо где то идет вызов public void refreshDynamicGrid() { this.loader.load(); } ) Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2015, 18:34 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39074833&tid=2124821]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
165ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
66ms |
get tp. blocked users: |
1ms |
| others: | 205ms |
| total: | 480ms |

| 0 / 0 |
