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]

Reply via email to