Hello, I'm trying to understand the petstore sample and I hoped someone could help me understand how the following code works.
function main(funName) { var fun = this[funName]; var args = new Array(arguments.length -1); for (var i = 1; i < arguments.length; i++) { args[i-1] = arguments[i]; } getPetStore(); fun.apply(args); } What I understand here is that the only purpose of the function called "main" is to be sure that it is called each time a request matches *.do <map:match pattern="*.do"> <map:call function="main"> <map:parameter name="page" value="{1}"/> </map:call> </map:match> I don't understand why we fetch other arguments, arguments.length should always equal one. I tried to copy-paste this in my own application because I need that too. It doesn't work. In my application fun stays empty so fun.apply(args) doesn't work ... In my application funName takes the value of the "page" parameter Also I don't any function called "apply" in javascript and I don't understand what this[funName] should return... I'm lost here. Also I don't understand something else in the pagination management (for example in the function viewCategory() in petstore.js) I don't get why we need the cocoon.createPageLocal(). >From what I understand about continuations, Cocoon automatically creates a continuation when we call sendPageAndWait(). So Cocoon should automatically remember the values of rowcount and skipmaxresults without having to call createPageLocal(). There's something that I don't get here. The code is below. Thanks in advance for your help and the time given. Philippe function viewCategory() { var categoryId = cocoon.request.get("categoryId"); var category = getPetStore().getCategory(categoryId); var maxResults = MAX_RESULTS; /* page local variable to keep track of pagination */ var local = cocoon.createPageLocal(); local.skipResults = 0; while (true) { var productList = getPetStore().getProductListByCategory(categoryId, local.skipResults, maxResults); local.lastPage = !productList.isLimitedByMaxRows; local.rowCount = productList.rowCount; var contextData = { accountForm: accountForm, productList: productList.rows, category: category, firstPage: local.skipResults == 0, lastPage: local.lastPage }; cocoon.sendPageAndWait("view/Category" + EXT, contextData, function () { /* release contextData and productList */ contextData = null; productList = null; }); var page = cocoon.request.get("page"); if (page == "previous") { if (local.skipResults != 0) { local.skipResults -= maxResults; } } else if (page == "next") { if (!local.lastPage) { local.skipResults += local.rowCount; } } } } I also --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]