I must have missed getting across what I was trying to convey... Basically the below was a proof-of-concept to show the same code that would be added to taglibs could be added to a javascript library and be freely distributed which would resolve the issues at hand. Then only the implementers would need to write javascript, everyone else would just need to learn the functions available and call the appropriate ones (and of course add the javascript include).
So as far as reading back a table, etc, etc. those can just as easily be a javascript api as a taglib update. The javascript api version would appear to give the same benefits for less cost from what I can tell so far. You would just need to instruct the user: if you need to replace inner html, call function a with the element to have the html replaced and the url to use to replaced the information. For an existing user, they're likely already calling a javascript function so they can re-direct from their own function in to the library as needed. Conceivably you could do the same for xml returns and anything else since we are talking client-side here. I haven't really used any of this ajax approach personally so I don't really know what kinds of "needs" people have when they are using it. Once the needs are determined it should be easy enough to write a good abstraction layer and I'd be willing to help there if this isn't something that's already planned by someone. I'd be interested to hear re: your ideas of handler types at [EMAIL PROTECTED] I'm moving this weekend (and have a newborn at home) so I'll be busy for the next week or so setting up and after that should have time to help out if it looks like something that I believe adds value. Regards...djsuarez -----Original Message----- From: Frank W. Zammetti [mailto:[EMAIL PROTECTED] Sent: Wednesday, April 20, 2005 4:31 PM To: David Suarez Cc: Struts Users Mailing List Subject: Re: AJAX: Whoa, Nellie! David Suarez wrote: > Saw the flood of these AJAX messages and was interested so I did a quick > test using a plain html page to see how easy it is to create a generic > javascript to handle the ajax call-back pieces in question. My test > showed it is easily possible so I'm not sure how much value you'll get > from creating another server-side component. Another javascript library > that wraps dojo would probably be all you need. If you consider a taglib to be server-side, than granted. Either way, the benefit is the fact that you don't have to write any code, even admittedly simple code. > > This is the general idea of the test I did in terms of the dojo/ajax > conversation: > > Generic Javascript function always included if you need to use ajax > (some javascript include that is added to the page): > > //updates the inner html of the passed object > updateInnerHtml(theobj, theurl) > { > dojo.io.bind({ > url: theurl, > load: function(type, data) { > theobj.innerHTML = data; }, //Note: "theobj" > variable is accessible here in firefox and IE... that was my test > mimetype: "text/plain" > }); > } That's fine if what you want to do is update innerHTML of something. But what if you want to take XML that was returned and populate a table? That is, I think you'd agree, more involved code. > Using the example, something like the below would be on the page: > <html:button property="button1" value="Click to do Ajax!" > onClick="updateObject(this,"http://xxx.yyy.zzz?a=b&c=d")"/> And that works well if all your looking to do is submit a query string to a URL. If you want to do something more complex (like create an XML document from a collection of form elements), that too is more involved. These are the types of functions I envision the tags providing for you as standard actions. If you need to do something non-standard, no problem either. > and it could be reused for any innerHTML replacements by changing the > url in the function call. I don't think button has an innerHTML > property but just to use the example given, you get the idea.... > Probably having a javascript library with updateValue() and other useful > often changed properties would do the trick. That is a good idea! I'll think I'll steal that for some of my standard actions :) > If anyone ever takes this on I'd appreciate it if you could keep me in > the loop on development of it. I would help as well as needed. Maybe > the dojo team has something like this already in mind? One note: you would in fact be able to do what you are doing here with my tags as well, the only difference is that you wouldn't have to write that code, either the function or the event handler. You could instead specify it in an XML config file. > The quick sample I put together doesn't use dojo so I haven't tested the > specific code but I have tested the idea with a test script and it does > work. > > Hope the above makes sense. Does anyone see negatives to using the > above? It seems to take care of the code duplication concerns. The url > concern can be handled by making it a variable passed from the server > side I would guess from a form or other similar mechanism would do the > trick there. I don't have any concerns with it per se, but I do think there is more that can be done, and I still think the tags are the best way to present it. Hey, if you'd like to be involved with my efforts, I could certainly use the help in creating the transmission and reception handlers (a new concept in my approach, I can bring you up to speed privately if you are interested). This way you could even do one version that uses Dojo if you want! Frank > I was interested in the conversation, hope this adds some value. > > Regards...djsuarez > > -----Original Message----- > From: Frank W. Zammetti [mailto:[EMAIL PROTECTED] > Sent: Tuesday, April 19, 2005 10:49 PM > To: Struts Users Mailing List > Subject: Re: AJAX: Whoa, Nellie! > > Martin Cooper wrote: > >>My "Huh?" comment was in reference you your statement that the > > approach I > >>was describing "doesn't really help people with existing apps", which > > I take > >>issue with. If you put the JavaScript methods in separate file, it has > > the > >>exact same impact on the JSP pages as your approach does, but without >>needing the custom attributes. You say 'ajaxRef="button1"' and I say >>'onclick="doButton1()"'. > > > Ok, I may have misunderstood that. > > Moving on though... > > > "If you put the JavaScript methods in separate file, it has the > > exact same impact on the JSP pages as your approach does" > > I do not belive this is true, and here's why... as far as the event > handlers go, I agree, the impact is virtually identical... But in terms > of what the event handler calls there is I think a big difference. > Going back to your original example, you state: > > Elsewhere in the JSP page, or maybe somewhere else: > function doButton1() { > dojo.io.bind({ > url: > "http://www.omnytex.com?buttonValue=button1&textValue=text1", > load: function(type, data) { > document.getElementById("resultLayer").innerHTML = data; }, > mimetype: "text/plain" > }); > } > > Now, that looks like more work to me because, if nothing else, I'm > writing the return handler myself. And if I had to write 20 of these > functions for a single page, ugh! You mentioned DynaActionForms saving > a lot of tedious coding... this is about as tedious as it gets :) > > If you want to argue that moving these functions out to another file > that you include makes the situation better, I'd say only marginally > better because the benefit of separating the code is offset somewhat by > the fact that now there are two files to maintain. Then again, you > could also argue that THAT is better because you can have coders > handling the JS while you have page authors handling just the markup :) > (beat you to the punch on that one!) > > ** > > You know, it just dawned on me... in all of this, recall that my > proposal allowed for you to call whatever JS function you want rather > than have the code generated for you... there is absolutely nothing to > stop you from calling a function that uses Dojo! This gives you, I > think, the best of both worlds: you get to use Dojo, but you can still > do so in a declative way... although, you'd take on the responsibility > of importing the necassery JS code and implementing the send and receive > > handlers, at which point there probably isn't a whole lot to be gained > by the config file anyway, in fact it would probably be > counterproductive... but the point is you *can* do this. > > ** > > You know, when all is said and done, we simply have a difference of > opinion in all this. I'd bet neither of us really wants to debate this > for the next week :) I think we're probably at that point where we > aren't going to convince each other of anything but some relatively > small points at best. > > I don't deny that Dojo looks cool, and if you are happily using it I am > genuinely happy about it! If you want to tell people how great it is, > that is fine with me too (although I would hope you recognize your > position gives your opinions weight and would be a little careful about > proclaiming anything to be the endorsed answer). > > I am going to go off and implement my idea because if nothing else I > have seen a decent amount of interest amidst all this debate. The > simple fact that the whole concept was reopened by someone else (I had > nothing to do with it, I was actually completely off this whole idea > after the initial RFC thread died down) should indicate it isn't just me > > that thinks it has merit. > > In the end, choice is good. Like all FOSS projects, if when it's done > people find it useful and want to use it, that will make me rather > happy. If they discover Dojo and think it's the cat's meow, that is > sweet too. If they go off in a completely different direction, things > are working as they are supposed to because a choice was made between a > number of options :) > > Frank > > > > > > -- Frank W. Zammetti Founder and Chief Software Architect Omnytex Technologies http://www.omnytex.com --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]