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]