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]