Filtrage partagé côté serveur dans dojo

Je fais le filtrage côté serveur dans la grille améliorée dans la version dojo 1.10. Ici, dans le document, il est clairement mentionné d'utiliser isStateful property. En outre, si nous utilisons une propriété isState, nous devons également utiliser le paramètre URL qui, selon la documentation, est

Lorsque les deux isServerSide et isStateful sont vrais, il s'agit d'un endroit pour définir l'URL du serveur, s'il ne peut pas être récupéré par store.url.

Je veux savoir comment faire ici store.url ? J'ai cherché dans d'autres sites, l'autre définition que je reçois de l'URL est ici et ici

Si vous utilisez stateful, c'est l'url pour envoyer des commandes. Par défaut pour store.url

Quelqu'un peut-il fournir un exemple ou une démonstration simple sur la façon d'utiliser isStateful property. Je suis assez confus ici. Devons-nous avoir des scripts côté serveur pour cela?

require(['dojo/store/JsonRest', 'gridx/Grid', 'gridx/core/model/cache/Async', 'gridx/modules/SingleSort', 'gridx/modules/pagination/Pagination', 'gridx/modules/CellWidget', 'dijit/registry', 'gridx/modules/Bar', 'gridx/support/LinkPager', 'gridx/support/Summary', 'dojo/domReady!'],function(Store, Grid, Async, Sort, Pagination, CellWidget, registry, Bar, LinkPager, Summary){ var jsonStore = new Store({ idProperty: "id", target: <your url>, query: function(query, options) { var request = {}; /* Paging Params. */ if (grid==null) { /* null on first call to server. */ request.currentPage=0; request.pageSize=DEFAULT_PAGE_SIZE; } else { request.currentPage=grid.pagination.currentPage(); request.pageSize=grid.pagination.pageSize(); if (request.pageSize==-1) { /* Page size is -1 when 'ALL' records selected. Reset */ request.pageSize=DEFAULT_PAGE_SIZE; } } /* Sorting Parameters. */ if (options.sort == null) { /* null on first render. */ request.sortAttribute="id"; request.descending=false; } else { request.sortAttribute=options.sort[0].attribute; request.descending=options.sort[0].descending; } var results = Store.prototype.query.call(this, request); return results; } }); grid = new Grid({ cacheClass: Async, store: jsonStore, structure: <your column definition>, barBottom: [{pluginClass: Summary, style: 'text-align: left;'},{pluginClass: LinkPager, style: 'text-align: right;'}], modules:[Sort, Pagination, Bar, CellWidget]}); grid.pagination.setPageSize(DEFAULT_PAGE_SIZE); registry.byId('gridDIV').set('content', grid); grid.startup(); });