Author: niallp Date: Wed Apr 6 00:44:25 2005 New Revision: 160262 URL: http://svn.apache.org/viewcvs?view=rev&rev=160262 Log: Port to 1.2.x branch - Bug 21603 Automatic readonly/disabled settings in struts-html reported by Shai Berger.
Modified: struts/core/branches/STRUTS_1_2_BRANCH/doc/userGuide/struts-html.xml struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/BaseHandlerTag.java struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/FormTag.java struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/ImgTag.java struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/LinkTag.java struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/PasswordTag.java struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/TextTag.java struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/TextareaTag.java Modified: struts/core/branches/STRUTS_1_2_BRANCH/doc/userGuide/struts-html.xml URL: http://svn.apache.org/viewcvs/struts/core/branches/STRUTS_1_2_BRANCH/doc/userGuide/struts-html.xml?view=diff&r1=160261&r2=160262 ============================================================================== --- struts/core/branches/STRUTS_1_2_BRANCH/doc/userGuide/struts-html.xml (original) +++ struts/core/branches/STRUTS_1_2_BRANCH/doc/userGuide/struts-html.xml Wed Apr 6 00:44:25 2005 @@ -1645,6 +1645,17 @@ </attribute> <attribute> + <name>disabled</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + <info> + Set to <code>true</code> if the Form's input fields should be + disabled. + </info> + <since>Struts 1.2.7</since> + </attribute> + + <attribute> <name>enctype</name> <required>false</required> <rtexprvalue>true</rtexprvalue> @@ -1704,6 +1715,17 @@ <info> JavaScript event handler executed if the form is submitted. </info> + </attribute> + + <attribute> + <name>readonly</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + <info> + Set to <code>true</code> if the Form's input fields should be + read only. + </info> + <since>Struts 1.2.7</since> </attribute> <attribute> Modified: struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/BaseHandlerTag.java URL: http://svn.apache.org/viewcvs/struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/BaseHandlerTag.java?view=diff&r1=160261&r2=160262 ============================================================================== --- struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/BaseHandlerTag.java (original) +++ struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/BaseHandlerTag.java Wed Apr 6 00:44:25 2005 @@ -132,9 +132,22 @@ /** Component is disabled. */ private boolean disabled = false; + /** Indicates whether 'disabled' is a valid attribute */ + protected boolean doDisabled = true; + /** Component is readonly. */ private boolean readonly = false; + /** + * <p>Indicates whether 'readonly' is a valid attribute.</p> + * + * <p>According to the HTML 4.0 Specification <readonly> + * is valid for <input type="text">, <input type="password"> + * and <textarea"> elements. Therefore, except for those tags this + * value is set to <code>false</code>.</p> + */ + protected boolean doReadonly = false; + // CSS Style Support /** Style attribute associated with component. */ @@ -844,12 +857,27 @@ prepareAttribute(handlers, "onblur", getOnblur()); prepareAttribute(handlers, "onfocus", getOnfocus()); - if (getDisabled()) { - handlers.append(" disabled=\"disabled\""); + // Get the parent FormTag (if necessary) + FormTag formTag = null; + if ((doDisabled && !getDisabled()) || + (doReadonly && !getReadonly())) { + formTag = (FormTag)findAncestorWithClass(this, FormTag.class); } - if (getReadonly()) { - handlers.append(" readonly=\"readonly\""); + // Format Disabled + if (doDisabled) { + boolean formDisabled = formTag == null ? false : formTag.isDisabled(); + if (formDisabled || getDisabled()) { + handlers.append(" disabled=\"disabled\""); + } + } + + // Format Read Only + if (doReadonly) { + boolean formReadOnly = formTag == null ? false : formTag.isReadonly(); + if (formReadOnly || getReadonly()) { + handlers.append(" readonly=\"readonly\""); + } } } Modified: struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/FormTag.java URL: http://svn.apache.org/viewcvs/struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/FormTag.java?view=diff&r1=160261&r2=160262 ============================================================================== --- struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/FormTag.java (original) +++ struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/FormTag.java Wed Apr 6 00:44:25 2005 @@ -169,6 +169,12 @@ */ protected String acceptCharset = null; + /** Controls whether child controls should be 'disabled'. */ + private boolean disabled = false; + + /** Controls whether child controls should be 'readonly'. */ + protected boolean readonly = false; + // ------------------------------------------------------------- Properties /** @@ -403,6 +409,26 @@ } + /** Sets the disabled event handler. */ + public void setDisabled(boolean disabled) { + this.disabled = disabled; + } + + /** Returns the disabled event handler. */ + public boolean isDisabled() { + return disabled; + } + + /** Sets the readonly event handler. */ + public void setReadonly(boolean readonly) { + this.readonly = readonly; + } + + /** Returns the readonly event handler. */ + public boolean isReadonly() { + return readonly; + } + // --------------------------------------------------------- Public Methods @@ -680,12 +706,14 @@ action = null; moduleConfig = null; enctype = null; + disabled = false; focus = null; focusIndex = null; mapping = null; method = null; onreset = null; onsubmit = null; + readonly = false; servlet = null; style = null; styleClass = null; Modified: struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/ImgTag.java URL: http://svn.apache.org/viewcvs/struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/ImgTag.java?view=diff&r1=160261&r2=160262 ============================================================================== --- struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/ImgTag.java (original) +++ struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/ImgTag.java Wed Apr 6 00:44:25 2005 @@ -45,6 +45,13 @@ public class ImgTag extends BaseHandlerTag { + // ----------------------------------------------------- Constructor + + public ImgTag() { + super(); + doDisabled = false; + } + // ------------------------------------------------------------- Properties /** Modified: struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/LinkTag.java URL: http://svn.apache.org/viewcvs/struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/LinkTag.java?view=diff&r1=160261&r2=160262 ============================================================================== --- struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/LinkTag.java (original) +++ struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/LinkTag.java Wed Apr 6 00:44:25 2005 @@ -44,6 +44,13 @@ */ protected String text = null; + // ----------------------------------------------------- Constructor + + public LinkTag() { + super(); + doDisabled = false; + } + // ------------------------------------------------------------- Properties Modified: struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/PasswordTag.java URL: http://svn.apache.org/viewcvs/struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/PasswordTag.java?view=diff&r1=160261&r2=160262 ============================================================================== --- struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/PasswordTag.java (original) +++ struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/PasswordTag.java Wed Apr 6 00:44:25 2005 @@ -31,6 +31,7 @@ public PasswordTag() { super(); this.type = "password"; + doReadonly = true; } } Modified: struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/TextTag.java URL: http://svn.apache.org/viewcvs/struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/TextTag.java?view=diff&r1=160261&r2=160262 ============================================================================== --- struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/TextTag.java (original) +++ struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/TextTag.java Wed Apr 6 00:44:25 2005 @@ -34,8 +34,9 @@ */ public TextTag() { - super(); - this.type = "text"; + super(); + this.type = "text"; + doReadonly = true; } Modified: struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/TextareaTag.java URL: http://svn.apache.org/viewcvs/struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/TextareaTag.java?view=diff&r1=160261&r2=160262 ============================================================================== --- struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/TextareaTag.java (original) +++ struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/TextareaTag.java Wed Apr 6 00:44:25 2005 @@ -30,6 +30,13 @@ public class TextareaTag extends BaseInputTag { + // ----------------------------------------------------- Constructor + + public TextareaTag () { + super(); + doReadonly = true; + } + // --------------------------------------------------------- Public Methods --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]