yeah, I was reading about it, the app will be for internal usage, anyway I will have to first learn the concepts, and then try to build something alike myself... I know little JS, (basics) so... :S:S:S:S:S:. Thanks for the help.. A LOT... really.
I will see more in depth your suggestions, and see how does it turns out. G. On Fri, Sep 4, 2009 at 3:59 PM, John Huss <johnth...@gmail.com> wrote: > Be aware that Ext is licensed under the GPL and you need to purchase a > license to use it for commercial development. > > John > > On Fri, Sep 4, 2009 at 8:49 AM, John Bruce <woli...@gmail.com> wrote: > >> Yeah the Ext widgets are very nice for users but can be difficult to >> develop with sometimes. >> >> JSON is definitely not dead and worth learning about. >> >> >> On Fri, Sep 4, 2009 at 12:51 PM, Gustavo >> Pizano<webobjectspic...@gmail.com> wrote: >> > So. >> > public WOActionResults handleRequest(WORequest request, WOContext >> > context) { >> > will be invoked when form within the JS I will create a new >> XMLRequest() ? >> > which as I think it's done by the prototype.js that uses the Ajax >> framework >> > isn't? >> >> yes you would use the url generated by the Proxy component in an >> XMLHttpRequest. An example using JQuery (I don't know prototype.js) >> would be: >> >> var ajaxActionUrl = "<webobject >> name=AjaxSimpleProxyActionUrl></webobject>"; >> >> var postData = { "data" : $.toJSON( "a json formatted string eg { >> "foo" : "bar" ) }; >> $.post(ajaxActionUrl, postData); >> >> Note that the toJSON function is provided by a JQuery plugin. >> >> (Im jsut checking the JSONExample in the Ajax examples). >> > then it will look in the request a String with binding "data" and then >> > convert it to a JSON object and place it in the response. >> >> It's only looking for a request string value for "data" because that >> what I set (see the postData variable in the above JS example). It >> could be anything or even just the request body. >> >> >> > So here in this method is where I generate the list of objects I need to >> > send and place it into a JSON object, put it in the respose and send >> back to >> > the client.. isn't ? >> >> No, this method uses the "actionName" binding and calls the method in >> the parent component whose name is the value of the binding. So for >> example I have a method in my parent component called " >> generateListOfObjects": >> >> public JSONObject generateListOfObjects(final JSONObject data) { >> >> // get your list of objects >> >> // turn them into a JSONObject - probably a JSONArray >> >> // return this new JSONObject which containsyour objects >> >> } >> >> >> >> > Not clear: >> > 1. the actionName... this comes from the parent? no... where is that >> > binding? >> >> It's just a component binding like any other. So in the WOD of the >> parent component you have: >> >> AjaxSimpleProxyActionUrl : AjaxSimpleProxy { >> actionName = "generateListOfObjects"; >> } >> >> >> >> > 2. JSONObject jsonResponse = (JSONObject) >> > action.invoke(parent(), new >> > JSONObject(inputString)); .... what am I doing here?. >> >> >> you are calling the method whose name is the same as the actionName >> binding's value (eg generateListOfObjects) with an argument whose >> value is a JSONObject deserialised from the string value of the "data" >> HTTP form post variable. NSSelector uses Java reflection to call the >> method in the instance of the parent component. >> >> >> > 3/. What for do I need to get the String of "data" String >> inputString = >> > request.stringFormValueForKey("data"); If when Im requesting it has >> nothing? >> > I dunno.. im kinda confused here.. >> > >> >> You don't need it if the request has nothing - so feel free to change >> the component to not use a request varialbe. If you do this you can >> also change the method signature of the generateListOfObjects method >> to accept no arguments. >> >> >> > I dunno if the JSONExample that is there, does what Im trying to do >> here... >> > and what you explain me... I see there is a AjaxProxy binding, and then >> > simply they ask for data form the JS as var a = <name>. >> > <proxyName>.method(). and then in the Application.java they register the >> > service which in the example is a ExampleService?.. >> > so I can do something like that but with my custom logic that return the >> > data as an Object? >> >> I'm not sure of the details of the exisitng AjaxProxy component. My >> basic understanding is that it includes some JS so that you can call a >> JS function on a genreated object which takes care of calling the >> serverside equivalent method. The AjaxSimpleProxy component is more >> basic and you have to do a more work but it exposes the raw process. I >> just use it sometimes when I need to call a method in my component and >> get some JSON data back. >> >> > I dunno to many things in my mind,.. but if this what Im thinking its >> > correct then my mind its getting clear.. I wish to learn more in depth >> how >> > to do things.. but I will be reinventing the wheel... hehe . >> > >> >> There are a lot of concepts going on here. You might find focusing >> separatly on each part easier and then put it together at the end. >> Some areas to learn about: >> >> 1. JSON >> 2. Ajax and XMLHttpRequests - use a JS library like JQuery or >> Prototype to do the work for you. Ext also has it's own ways of doing >> this too but you can also use an adaptor. >> 3. getting more familiar with the request-response loop in WO will >> help. Ajax requests are treated slightly differently to prevent >> backtracking problems. >> 4. If you're not familair with Reflection in Java then you will want >> to read about that as well. NSSelector is more usefult than >> java.land.reflect.Method as it can be created indepently of a >> particular object. >> >> >> HTH >> >> - John >> >> >> >> >> >> > G. >> > >> > >> > >> > >> > On Fri, Sep 4, 2009 at 12:47 PM, John Bruce <woli...@gmail.com> wrote: >> >> >> >> Hi Gustavo, >> >> >> >> You can use the Wonder Ajax framework to get JSON data loaded so that >> >> Ext can use it as a data store. The pricipal is to have a component >> >> that generates a url which Ext can use as the remote address for a >> >> JSON data store. A very rough example which is similar to the >> >> AjaxProxy one is: >> >> >> >> public class AjaxSimpleProxy extends AjaxComponent { >> >> >> >> public String actionName; >> >> >> >> public AjaxSimpleProxy(WOContext context) { >> >> super(context); >> >> >> >> } >> >> >> >> @Override >> >> public void reset() { >> >> actionName = null; >> >> super.reset(); >> >> } >> >> >> >> >> >> @Override >> >> protected void addRequiredWebResources(WOResponse response) { >> >> >> >> } >> >> >> >> @Override >> >> public void appendToResponse(WOResponse response, WOContext >> >> context) { >> >> //WOComponent component = context.component(); >> >> >> >> String actionUrl = >> >> AjaxUtils.ajaxComponentActionUrl(context); >> >> >> >> response.appendContentString(actionUrl); >> >> >> >> super.appendToResponse(response, context); >> >> } >> >> >> >> public String actionName() { >> >> if (actionName == null) { >> >> actionName = (String) >> >> valueForBinding("actionName"); >> >> } >> >> return actionName; >> >> } >> >> >> >> >> >> @Override >> >> public WOActionResults handleRequest(WORequest request, >> WOContext >> >> context) { >> >> WOResponse response = AjaxUtils.createResponse(request, >> >> context); >> >> >> >> String inputString = >> request.stringFormValueForKey("data"); >> >> >> >> if (log.isDebugEnabled()) { >> >> log.debug("AjaxSimpleProxy.handleRequest: input >> = " >> >> + inputString); >> >> } >> >> >> >> NSSelector action = new NSSelector(actionName(), new >> >> Class[] { >> >> JSONObject.class } ); >> >> >> >> try { >> >> JSONObject jsonResponse = (JSONObject) >> >> action.invoke(parent(), new >> >> JSONObject(inputString)); >> >> >> >> response.setContent(jsonResponse.toString()); >> >> response.setHeader("application/json", >> >> "content-type"); >> >> >> >> } catch (Exception e) { >> >> e.printStackTrace(); >> >> } >> >> >> >> >> >> return response; >> >> } >> >> >> >> >> >> >> >> } >> >> >> >> Basically the idea in this component is to bind the name of an action >> >> in the parent component that accepts a JSONObject as the argument. >> >> >> >> When rendering the main HTML response for that page this component >> >> generates a url which when called will looked for a request paramater >> >> called "data" which it expects to be JSON data. It will then turn that >> >> into a JSON object and invoke a method in the parent component that >> >> match the name of the "actionName" binding. It expects that this >> >> method takes a JSONObject as the only parameter. In that method you >> >> can do whatever you need but the return value should also be a >> >> JSONObject and then that result is returned as the content of the >> >> response. >> >> >> >> This is a very basic component and is just to illustrate one way it >> >> can be done. You would want to clean it up if you actually use it in >> >> production. It doesn't do anything cleaver for you but can allow you >> >> to send JSON data back and forth to a WOComponent from JS in your >> >> page. >> >> >> >> Other ways include creating a direct action to return the JSON data >> >> for the EXT grid. This is simpler but has the problem that it is >> >> outside your component. >> >> >> >> Ext can be very heavy weight and require a lot of files to be >> >> downloaded to the client browser. It's also likes things to be done in >> >> the *Ext Way* which can sometimes be a pain. Although the widgets are >> >> very nice... . It does work with WO but you do need to do a bit of >> >> work. >> >> >> >> HTH >> >> >> >> John >> >> >> >> >> >> On Fri, Sep 4, 2009 at 11:16 AM, Gustavo >> >> Pizano<webobjectspic...@gmail.com> wrote: >> >> > Hello,.. Well after almost giving up on my requirement to put more >> than >> >> > one >> >> > column in a wobrowser to have multiple selections. I remind that >> before >> >> > I >> >> > did some little work with EXTJS. It has what we need. a GRID >> >> > extjsComponent.. :D:D.. now how do I integrate WO and EXTJS? >> >> > In the example of grid they are loading data from an array of >> arrays, >> >> > and >> >> > configuring "hard-coded" all the grid. How can I from the JS ask the >> WO >> >> > server for the data to congifure the grid? is it possible?.. >> >> > another approach I saw was to generate a hidden WORepetition and >> >> > generate >> >> > all the data, then form the JS get the element and create the grid, >> but >> >> > this >> >> > approach I don't like it, becuase if I need another grid somewhere >> else >> >> > I >> >> > have to do all again, I want to reuse code. >> >> > Another approach is to load the data form an xml, the same, grid has >> a >> >> > url: >> >> > attribute I fetch the xml there, so in th backend I will need to >> >> > generate >> >> > the xml, keep it there, while EXTJS via the url: ask for it.. what >> comes >> >> > to >> >> > my mind are security stuff... and some theoretical stuff like: >> >> > How WO knows that the JS that its requesting is valid for the >> session >> >> > in >> >> > the WO application?. >> >> > I think this is about the request-n-response loop... isn't it? >> >> > >> >> > So.. any advice... help, clue, light, code? >> >> > G. >> >> > >> >> > _______________________________________________ >> >> > Do not post admin requests to the list. They will be ignored. >> >> > Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) >> >> > Help/Unsubscribe/Update your Subscription: >> >> > >> >> > >> http://lists.apple.com/mailman/options/webobjects-dev/wolists%40gmail.com >> >> > >> >> > This email sent to woli...@gmail.com >> >> > >> > >> > >> _______________________________________________ >> Do not post admin requests to the list. They will be ignored. >> Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) >> Help/Unsubscribe/Update your Subscription: >> >> http://lists.apple.com/mailman/options/webobjects-dev/johnthuss%40gmail.com >> >> This email sent to johnth...@gmail.com >> > >
_______________________________________________ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com