Excellent post Ken. I absolutely agree with everything you mention. I too use jQuery and jQuery UI directly in my JSP templates (not through some tag library) and find it easier and more powerful. I can also throw in a +1 for Tiles as a compositing technology that is indispensable in large sites. (*Chris*)
On Sun, Aug 11, 2013 at 10:26 PM, Ken McWilliams <ken.mcwilli...@gmail.com>wrote: > I have some experience creating custom struts2 tags, but for ajax I do not > advise this route at all. XML is not meant as a replacement for a > programming language, it is meant for configuration. It might seem > intuitive without further investigation that there are a limited number of > HTML UI elements and their functionality quite straight forward and so it > would seem reasonable that a configuration only route could work in the > general case. This is wrong as evidenced by all efforts to define dynamic > UI elements using XML. > > Even JavaFX tried to use xml and that was abandoned, they had the benefit > of designing the entire environment from the ground up, which is hardly the > case here. > > Not sure if you are familiar with the popular Question and Answer site > "Stack Overflow", however a great many questions regarding the struts2 ajax > tags go unanswered. If people could find solutions for their configuration > issues I wouldn't be so open with my negative view of ajax tags. Since it > is most often new users of Struts2 that attempt to use these tags and to > what appears to be dismal results I can't help but think that these tags > may actually be of harm to the struts2 image. > > I've only experimented with the jquery ajax tags breifly and experienced > frustration. Also before that experimented with the now deprecated dojo > tags. I had used the dojo tags within their prescribed limits but it is > much more enjoyable to have freedom. They were just too cumbersome. As soon > as you use JavaScript everything is far easier. > > Try to use Unobtrusive JavaScript: > http://en.wikipedia.org/wiki/Unobtrusive_JavaScript > > This will make your html "tag like" while allowing you to use the > JavaScript APIs as intended. > > It is worth noting that the tag libraries can be used as templates. I bring > this up because one natural objection to not using a tag library would be a > loss in terms of this particular use. There are a number of other solutions > in this area one of them is Apache Tiles. JSPs, Freemarker, and Velocity > are all view technologies and while they have facilities for templates it > isn't their first concern. Apache tiles and Sitemesh both address the issue > of reducing boiler plate head on. Tiles does not try to do what the > aforementioned view technologies do, instead think of it as a way to factor > commonality out of any of those view technologies. As such both Apache > Tiles is a meta-view technology. > > What I advise: > > 1) Avoid ajax tag libraries and write JavaScript by hand - even if you > don't know JS, you will be able to understand the documentation of the > popular JS UI elements and achieve the same level of functionality as > provided by the ajax tags even if all you do is cut and paste programming. > 2) Follow the Unobtrusive JavaScript practice. > 3) When writing JS do not hard code URLs use the struts2 URL tag (It will > pick up changes to the context root that way). > 4) When asking for help with the client side, no one needs to know what > server side technology is used. The is greatly improve your chances for > positive feedback. > 5) Use the Struts2-JSON plugin to produce data for your ajax consuming UI > elements and also as a means of accepting JSON data into actions. > 6) When asking for server side support, try to insulate the audience from > your particular JS. (Determine that the correct data is being sent to the > server, if it not the issue is a client side, if the correct data is being > sent only provide that data [the query string or the JSON string]). > 7) Use firebug plugin fore Firefox, it is a huge help. > ------------ > 8) Should you feel the need for a stronger templates solution consider > tiles (or sitemesh), this link points to it in a rather current use of it: > http://tech.finn.no/2012/07/25/the-ultimate-view-tiles-3/ > > Hope the reasoning is clear enough. I sincerely want to save you and anyone > else with similar concern some time and sanity. > > > > > > On Sat, Aug 10, 2013 at 3:05 AM, Alireza Fattahi <afatt...@yahoo.com> > wrote: > > > Thanks for your comment. > > Did you have any experience with struts jquery tag or other tags too? > > Or you complete suggest that we write our own tags ! > > > > > > > > ~Regards, > > ~~Alireza Fattahi > > > > > > ________________________________ > > From: Ken McWilliams <ken.mcwilli...@gmail.com> > > To: Struts Users Mailing List <user@struts.apache.org> > > Sent: Friday, 9 August 2013, 8:22 > > Subject: Re: AJAX Jsp tags > > > > > > Don't use a JSP AJAX tag library. The dojo JSP tags didn't work well not > > because of dojo or an fault of the tag authors, the technologies simply > > don't mesh. It's as sane to program Java via XML as it is to program > > JavaScript via XML. > > > > XML is used for configuration. At first glance you think you'll only need > > trivial behaviour but this is seldom ever the case, JS UI components are > > much easier to work with and you will need to provide your own handlers, > > which are often required even in the simple cases. XML can not account > for > > all these cases and does not provides the means to add custom handlers > in a > > way that would be as simple as using the underlying JS framework > naturally. > > > > Further the tag authors often lag behind the UI components that they > wrap, > > the documentation and features often fall behind too. > > > > With even a trivial understanding of JS you should be able to produce the > > same results as the Tags in the same time frame, as you gain experience > > you'll quickly superseded the capabilities of any tag library. > > > > > > > > > > > > On Thu, Aug 8, 2013 at 11:02 AM, Chris Pratt <thechrispr...@gmail.com > > >wrote: > > > > > The dojo based tags are deprecated, the jQuery based tags are not. > > > (*Chris*) > > > > > > > > > On Thu, Aug 8, 2013 at 9:54 AM, Alireza Fattahi <afatt...@yahoo.com> > > > wrote: > > > > > > > Hi, > > > > > > > > I have confused with struts 2 ajax please correct me: > > > > 1- The dojo plugin is deprecated ( > > > > http://struts.apache.org/release/2.3.x/docs/ajax-tags.html) > > > > 2- According to above we are not recommended to use dojo plugin in > new > > > > projects. > > > > 3- All tags that mentioned in above page like: a, autocompliter,bind > > ... > > > > shall not be used. > > > > 4- According to page > > > http://struts.apache.org/release/2.3.x/docs/ajax.html > > > > : > > > > "....First, you can use some type of JSP tag. Here, you don't have to > > > know > > > > very much at all about Ajax or JavaScript. The taglib does all the > > work, > > > > and you just have to figure out how to use the taglib. The standard > > > > Struts 2 taglib includes several Ajax JSP tags," > > > > 5- The "Ajax JSP tags" link above will redirect to > > > > http://struts.apache.org/release/2.3.x/docs/ajax-tags.html, which is > > > > deprecated!! > > > > > > > > I don't get it ! > > > > Can we use AJAX Jsp tags or they are deprecated ? > > > > > > > > > > > > ~Regards, > > > > ~~Alireza Fattahi > > > > > > > > > >