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]