I actually agree with everything that you've said. I just have one issue. The struts tag libs are still heavily used, and haven't been deprecated. If they aren't part of the core struts package, then they should be deprecated and moved to a different project.
On Tue, 22 Jun 2004 15:21:25 -0700 (PDT), David Graham <[EMAIL PROTECTED]> wrote: > > Well said Niall. IMO, tags with any of the following properties don't > belong in Struts: > 1. They don't interact with core Struts resources/framework. > 2. They use javascript that may not work in all browsers. > 3. They generate non-standard HTML. > 4. They duplicate functionality already available in the JSTL. > > Many times Jakarta Taglibs is a more suitable home for these tags. > > David > > --- Niall Pemberton <[EMAIL PROTECTED]> wrote: > > You're not out of line at all - this list is the place to discuss > > enhancement requests and requests which come with a patch attached are > > more > > welcome than those without :-) > > > > Having said that, I'm against this change. If the user disables > > javascript > > in their browser then the cancel button no longer works. Even with your > > enhanced patch to turn on/off the additional behaviour by setting a new > > javascript attribute to true/false, the fact remains that the cancel > > button > > would stop working with javascript disabled. I bet we would have > > questions > > every week titled "Cancel Button Doesn't Work" on the user list and it > > will > > get boring typing the same "Did you set the javascript='true' attribute > > etc > > etc." > > > > You might say that the same arguments is true for the existing > > javascript in > > the CancelTag (i.e. onclick="bCancel=true") but I wouldn't agree with > > that. > > Although that javascript would also not work with javascript disabled, > > the > > fact is that it interacts with the javascript rendered by the validator > > framework - that javascript IMO is an optional extra because with > > javascript > > disabled the validator framework's server side validation would still > > work > > and the system would not be *broken*. > > > > Another point about the issue you are trying to resolve is that its a > > browser/html isssue and nothing to do with how Struts works. If we put > > in > > this patch to implement some custom javascript behaviour then what about > > the > > next person who wants their own funky bit of javascript in Struts to > > implement their custom behaviour? > > > > If you look at the CancelTag it doesn't actually do much "Struts" wise - > > you > > could easily do what it does directly in html (including the behaviour > > you > > want), it just saves keystrokes. Maybe Jakarta Taglibs would be a better > > place for this tag and the behaviour that you want - they have an > > "input" > > tags component. > > > > http://jakarta.apache.org/taglibs/doc/input-doc/intro.html > > > > When Struts was *born* there wasn't much else around - but now many of > > the > > Struts tags can be replaced with JSTL and the current view (which I > > agree > > with) seems to be that the tags should be split into *core* Struts tags > > - > > tags which implement behaviour specific to Struts and the rest which > > will be > > kept on as "legacy" tags. The idea being that we should only continue to > > develop *core* tags. IMO the cancel tag falls into the later category - > > others may differ though. > > > > Niall > > > > ----- Original Message ----- > > From: "Marcus Breese" <[EMAIL PROTECTED]> > > To: <[EMAIL PROTECTED]> > > Sent: Tuesday, June 22, 2004 7:22 PM > > Subject: PATCH: html:cancel tag. Made a javascript version for > > submitting > > > > > > > I'm submitting this again here because my Bugzilla patch hasn't gone > > > anywhere, so I don't know if anyone likes this idea or not. > > > Basically, if the cancel button is after the submit button on a form, > > > and the user hits 'enter' to submit the form, the the cancel button is > > > the one that is activated, causing the form to be cancelled. So, I > > > added a "javascript" property to the cancel button, that when true > > > causes the javascript button to be rendered as a combination html > > > button and a hidden text field that are linked through a javascript > > > onclick event. It is completely backwards compatible and doesn't > > > break any current pages (that I know of). > > > > > > If I'm completely out of line sending this here, I appologize... > > > > > > Bugzilla link: http://issues.apache.org/bugzilla/show_bug.cgi?id=25860 > > > > > > PATCH > > > ==================== > > > > > > Index: doc/userGuide/struts-html.xml > > > =================================================================== > > > RCS file: > > /home/cvspublic/jakarta-struts/doc/userGuide/struts-html.xml,v > > > retrieving revision 1.67 > > > diff -u -r1.67 struts-html.xml > > > --- doc/userGuide/struts-html.xml 2 Jan 2004 11:55:38 -0000 1.67 > > > +++ doc/userGuide/struts-html.xml 3 Jan 2004 00:44:06 -0000 > > > @@ -410,6 +410,16 @@ > > > disabled. > > > </info> > > > </attribute> > > > + <attribute> > > > + <name>javascript</name> > > > + <required>false</required> > > > + <rtexprvalue>true</rtexprvalue> > > > + <info> > > > + Set to <code>true</code> if this input field should be > > > + rendered using a javascript button/hidden field combination > > > + as opposed to a submit button. > > > + </info> > > > + </attribute> > > > > > > <attribute> > > > <name>onblur</name> > > > Index: src/share/org/apache/struts/taglib/html/CancelTag.java > > > =================================================================== > > > RCS file: > > > /home/cvspublic/jakarta-struts/src/share/org/apache/struts/taglib/html/Cance > > lTag.java,v > > > retrieving revision 1.13 > > > diff -u -r1.13 CancelTag.java > > > --- src/share/org/apache/struts/taglib/html/CancelTag.java 31 Jul 2003 > > > 00:19:04 -0000 1.13 > > > +++ src/share/org/apache/struts/taglib/html/CancelTag.java 3 Jan 2004 > > > 00:44:06 -0000 > > > @@ -106,6 +106,12 @@ > > > */ > > > protected String value = null; > > > > > > + /** > > > + * Should this be rendered using javascript ? > > > + */ > > > + > > > + protected String javascript = null; > > > + > > > > > > // ------------------------------------------------------------- > > Properties > > > > > > @@ -144,6 +150,35 @@ > > > } > > > > > > > > > + > > > + /** > > > + * return the javascript value > > > + */ > > > + public String getJavascript() { > > > + return javascript; > > > + } > > > + > > > + /** > > > + * @param javascript > > > + */ > > > + public void setJavascript(String javascript) { > > > + this.javascript = javascript; > > > + } > > > + > > > + /** > > > + * > > > + * Return a boolean for if this should be rendered using javascript > > > + */ > > > + > > > + public boolean renderJavascript() { > > > + if (javascript!=null && javascript.toUpperCase().equals("TRUE")) { > > > + return true; > > > + } > > > + return false; > > > + } > > > + > > > + > > > + > > > // --------------------------------------------------------- > > Public > > Methods > > > > > > > > > @@ -192,10 +227,14 @@ > > > > > > // Generate an HTML element > > > StringBuffer results = new StringBuffer(); > > > - results.append("<input type=\"submit\""); > > > - results.append(" name=\""); > > > - results.append(property); > > > - results.append("\""); > > > + if (renderJavascript()) { > > > + results.append("<input type=\"button\""); > > > + } else { > > > + results.append("<input type=\"submit\""); > > > + results.append(" name=\""); > > > + results.append(property); > > > + results.append("\""); > > > + } > > > if (accesskey != null) { > > > results.append(" accesskey=\""); > > > results.append(accesskey); > > > @@ -212,12 +251,33 @@ > > > results.append(prepareEventHandlers()); > > > results.append(prepareStyles()); > > > === message truncated === > > > __________________________________ > Do you Yahoo!? > Yahoo! Mail - You care about security. So do we. > http://promotions.yahoo.com/new_mail > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]