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

Reply via email to