Hello,

Nothing real important but I had a problem using ActionConfig prefix in
conjunction with HTML tags :

RequestUtils.populate() does the right job but the name of the form
elements generated by the tags does not contain the prefix.

The attached patch propose an implementation ; hope it helps.

-- 
SIMON Alexandre <[EMAIL PROTECTED]>
Index: src/share/org/apache/struts/taglib/html/BaseFieldTag.java
===================================================================
RCS file: /home/cvspublic/jakarta-struts/src/share/org/apache/struts/taglib/html/BaseFieldTag.java,v
retrieving revision 1.25
diff -u -r1.25 BaseFieldTag.java
--- src/share/org/apache/struts/taglib/html/BaseFieldTag.java	14 Mar 2004 06:23:46 -0000	1.25
+++ src/share/org/apache/struts/taglib/html/BaseFieldTag.java	16 Jul 2004 20:40:24 -0000
@@ -108,6 +108,7 @@
         StringBuffer results = new StringBuffer("<input type=\"");
         results.append(this.type);
         results.append("\" name=\"");
+        results.append(getMappingPrefix());
 
         if (indexed) {
             this.prepareIndex(results, name);
Index: src/share/org/apache/struts/taglib/html/BaseHandlerTag.java
===================================================================
RCS file: /home/cvspublic/jakarta-struts/src/share/org/apache/struts/taglib/html/BaseHandlerTag.java,v
retrieving revision 1.36
diff -u -r1.36 BaseHandlerTag.java
--- src/share/org/apache/struts/taglib/html/BaseHandlerTag.java	14 Mar 2004 06:23:46 -0000	1.36
+++ src/share/org/apache/struts/taglib/html/BaseHandlerTag.java	16 Jul 2004 20:40:26 -0000
@@ -544,6 +544,25 @@
 
     }
 
+    /**
+     * Return the ActionMapping prefix, if exists.
+     * If not, return "".
+     */
+
+    protected String getMappingPrefix() {
+
+        FormTag formTag = (FormTag) findAncestorWithClass(this, FormTag.class);
+        if (formTag.getMappingPrefix() != null) {
+            // formTag should always be not null because BaseHandlerTag is
+            // for form elements.
+            // But we have ImgTag as child ... is <img/> a form element ?
+            // I don't think so.
+            return formTag.getMappingPrefix();
+        }
+        return "";
+
+    }
+
     private Class loopTagSupportClass = null;
     private Method loopTagSupportGetStatus = null;
     private Class loopTagStatusClass = null;
Index: src/share/org/apache/struts/taglib/html/ButtonTag.java
===================================================================
RCS file: /home/cvspublic/jakarta-struts/src/share/org/apache/struts/taglib/html/ButtonTag.java,v
retrieving revision 1.18
diff -u -r1.18 ButtonTag.java
--- src/share/org/apache/struts/taglib/html/ButtonTag.java	14 Mar 2004 06:23:46 -0000	1.18
+++ src/share/org/apache/struts/taglib/html/ButtonTag.java	16 Jul 2004 20:40:26 -0000
@@ -141,6 +141,7 @@
         results.append("<input type=\"button\"");
         if (property != null) {
             results.append(" name=\"");
+            results.append(getMappingPrefix());
             results.append(property);
             // * @since Struts 1.1
             if( indexed )
Index: src/share/org/apache/struts/taglib/html/CancelTag.java
===================================================================
RCS file: /home/cvspublic/jakarta-struts/src/share/org/apache/struts/taglib/html/CancelTag.java,v
retrieving revision 1.16
diff -u -r1.16 CancelTag.java
--- src/share/org/apache/struts/taglib/html/CancelTag.java	14 Mar 2004 06:23:46 -0000	1.16
+++ src/share/org/apache/struts/taglib/html/CancelTag.java	16 Jul 2004 20:40:27 -0000
@@ -152,6 +152,7 @@
         StringBuffer results = new StringBuffer();
         results.append("<input type=\"submit\"");
         results.append(" name=\"");
+        results.append(getMappingPrefix());
         results.append(property);
         results.append("\"");
         if (accesskey != null) {
Index: src/share/org/apache/struts/taglib/html/CheckboxTag.java
===================================================================
RCS file: /home/cvspublic/jakarta-struts/src/share/org/apache/struts/taglib/html/CheckboxTag.java,v
retrieving revision 1.24
diff -u -r1.24 CheckboxTag.java
--- src/share/org/apache/struts/taglib/html/CheckboxTag.java	14 Mar 2004 06:23:46 -0000	1.24
+++ src/share/org/apache/struts/taglib/html/CheckboxTag.java	16 Jul 2004 20:40:27 -0000
@@ -124,6 +124,7 @@
         // Create an appropriate "input" element based on our parameters
         StringBuffer results = new StringBuffer("<input type=\"checkbox\"");
         results.append(" name=\"");
+        results.append(getMappingPrefix());
 
         if (indexed) {
             prepareIndex(results, name);
Index: src/share/org/apache/struts/taglib/html/FormTag.java
===================================================================
RCS file: /home/cvspublic/jakarta-struts/src/share/org/apache/struts/taglib/html/FormTag.java,v
retrieving revision 1.59
diff -u -r1.59 FormTag.java
--- src/share/org/apache/struts/taglib/html/FormTag.java	21 Apr 2004 05:21:08 -0000	1.59
+++ src/share/org/apache/struts/taglib/html/FormTag.java	16 Jul 2004 20:40:37 -0000
@@ -379,6 +379,17 @@
 
     }
 
+    /**
+     * Return the mapping prefix.
+     * Must be called AFTER mapping is initialized. If not,
+     * throws NullPointerException
+     */
+    
+    String getMappingPrefix() {
+
+        return this.mapping.getPrefix();        
+
+    }
 
     // --------------------------------------------------------- Public Methods
 
Index: src/share/org/apache/struts/taglib/html/ImageTag.java
===================================================================
RCS file: /home/cvspublic/jakarta-struts/src/share/org/apache/struts/taglib/html/ImageTag.java,v
retrieving revision 1.31
diff -u -r1.31 ImageTag.java
--- src/share/org/apache/struts/taglib/html/ImageTag.java	14 Mar 2004 06:23:46 -0000	1.31
+++ src/share/org/apache/struts/taglib/html/ImageTag.java	16 Jul 2004 20:40:38 -0000
@@ -179,6 +179,7 @@
         results.append("<input type=\"image\"");
         if (property != null) {
             results.append(" name=\"");
+            results.append(getMappingPrefix());
             results.append(property);
 
             if (indexed) {
Index: src/share/org/apache/struts/taglib/html/MultiboxTag.java
===================================================================
RCS file: /home/cvspublic/jakarta-struts/src/share/org/apache/struts/taglib/html/MultiboxTag.java,v
retrieving revision 1.25
diff -u -r1.25 MultiboxTag.java
--- src/share/org/apache/struts/taglib/html/MultiboxTag.java	14 Mar 2004 06:23:46 -0000	1.25
+++ src/share/org/apache/struts/taglib/html/MultiboxTag.java	16 Jul 2004 20:40:39 -0000
@@ -166,6 +166,7 @@
         // Create an appropriate "input" element based on our parameters
         StringBuffer results = new StringBuffer("<input type=\"checkbox\"");
         results.append(" name=\"");
+        results.append(getMappingPrefix());
         results.append(this.property);
         results.append("\"");
         if (accesskey != null) {
Index: src/share/org/apache/struts/taglib/html/RadioTag.java
===================================================================
RCS file: /home/cvspublic/jakarta-struts/src/share/org/apache/struts/taglib/html/RadioTag.java,v
retrieving revision 1.28
diff -u -r1.28 RadioTag.java
--- src/share/org/apache/struts/taglib/html/RadioTag.java	14 Mar 2004 06:23:46 -0000	1.28
+++ src/share/org/apache/struts/taglib/html/RadioTag.java	16 Jul 2004 20:40:40 -0000
@@ -217,6 +217,7 @@
             
         StringBuffer results = new StringBuffer("<input type=\"radio\"");
         results.append(" name=\"");
+        results.append(getMappingPrefix());
         // @since Struts 1.1
         if (indexed) {
             prepareIndex(results, name);
Index: src/share/org/apache/struts/taglib/html/ResetTag.java
===================================================================
RCS file: /home/cvspublic/jakarta-struts/src/share/org/apache/struts/taglib/html/ResetTag.java,v
retrieving revision 1.17
diff -u -r1.17 ResetTag.java
--- src/share/org/apache/struts/taglib/html/ResetTag.java	14 Mar 2004 06:23:46 -0000	1.17
+++ src/share/org/apache/struts/taglib/html/ResetTag.java	16 Jul 2004 20:40:42 -0000
@@ -171,6 +171,7 @@
         
         if (property != null) {
             results.append(" name=\"");
+            results.append(getMappingPrefix());
             results.append(property);
             results.append("\"");
         }
Index: src/share/org/apache/struts/taglib/html/SelectTag.java
===================================================================
RCS file: /home/cvspublic/jakarta-struts/src/share/org/apache/struts/taglib/html/SelectTag.java,v
retrieving revision 1.22
diff -u -r1.22 SelectTag.java
--- src/share/org/apache/struts/taglib/html/SelectTag.java	14 Mar 2004 06:23:46 -0000	1.22
+++ src/share/org/apache/struts/taglib/html/SelectTag.java	16 Jul 2004 20:40:42 -0000
@@ -213,6 +213,7 @@
         StringBuffer results = new StringBuffer("<select");
         
         results.append(" name=\"");
+        results.append(getMappingPrefix());
         // * @since Struts 1.1
         if (this.indexed) {
             prepareIndex(results, name);
Index: src/share/org/apache/struts/taglib/html/SubmitTag.java
===================================================================
RCS file: /home/cvspublic/jakarta-struts/src/share/org/apache/struts/taglib/html/SubmitTag.java,v
retrieving revision 1.21
diff -u -r1.21 SubmitTag.java
--- src/share/org/apache/struts/taglib/html/SubmitTag.java	14 Mar 2004 06:23:46 -0000	1.21
+++ src/share/org/apache/struts/taglib/html/SubmitTag.java	16 Jul 2004 20:40:44 -0000
@@ -167,6 +167,7 @@
         results.append("<input type=\"submit\"");
         if (property != null) {
             results.append(" name=\"");
+            results.append(getMappingPrefix());
             results.append(property);
             // * @since Struts 1.1
             if (indexed) {
Index: src/share/org/apache/struts/taglib/html/TextareaTag.java
===================================================================
RCS file: /home/cvspublic/jakarta-struts/src/share/org/apache/struts/taglib/html/TextareaTag.java,v
retrieving revision 1.19
diff -u -r1.19 TextareaTag.java
--- src/share/org/apache/struts/taglib/html/TextareaTag.java	14 Mar 2004 06:23:46 -0000	1.19
+++ src/share/org/apache/struts/taglib/html/TextareaTag.java	16 Jul 2004 20:40:44 -0000
@@ -74,6 +74,7 @@
         StringBuffer results = new StringBuffer("<textarea");
         
         results.append(" name=\"");
+        results.append(getMappingPrefix());
         // @since Struts 1.1
         if (indexed) {
             prepareIndex(results, name);

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to