Author: musachy
Date: Fri Jul 18 17:08:47 2008
New Revision: 678079

URL: http://svn.apache.org/viewvc?rev=678079&view=rev
Log:
WW-1677 <s:submit type="button" does not render the enclosed content inside 
properly

Thanks to Eric Martin and Mike Bydalek for the patch.

Added:
    
struts/struts2/trunk/core/src/main/resources/template/css_xhtml/submit-close.ftl
    
struts/struts2/trunk/core/src/main/resources/template/simple/submit-close.ftl
    struts/struts2/trunk/core/src/main/resources/template/xhtml/submit-close.ftl
    
struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/Submit-10.txt
    
struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/Submit-8.txt
    
struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/Submit-9.txt
Modified:
    
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/FormButton.java
    
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Reset.java
    
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Submit.java
    struts/struts2/trunk/core/src/main/resources/template/css_xhtml/submit.ftl
    struts/struts2/trunk/core/src/main/resources/template/simple/submit.ftl
    struts/struts2/trunk/core/src/main/resources/template/xhtml/submit.ftl
    struts/struts2/trunk/core/src/site/resources/tags/reset.html
    struts/struts2/trunk/core/src/site/resources/tags/submit.html
    
struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/ui/SubmitTest.java
    
struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/Submit-7.txt

Modified: 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/FormButton.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/FormButton.java?rev=678079&r1=678078&r2=678079&view=diff
==============================================================================
--- 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/FormButton.java
 (original)
+++ 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/FormButton.java
 Fri Jul 18 17:08:47 2008
@@ -34,7 +34,7 @@
 /**
  * FormButton.
  */
-public abstract class FormButton extends UIBean {
+public abstract class FormButton extends ClosingUIBean {
 
     static final String BUTTONTYPE_INPUT = "input";
     static final String BUTTONTYPE_BUTTON = "button";

Modified: 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Reset.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Reset.java?rev=678079&r1=678078&r2=678079&view=diff
==============================================================================
--- 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Reset.java
 (original)
+++ 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Reset.java
 Fri Jul 18 17:08:47 2008
@@ -74,6 +74,9 @@
         super(stack, request, response);
     }
 
+    public String getDefaultOpenTemplate() {
+        return "empty";
+    }
     protected String getDefaultTemplate() {
         return Reset.TEMPLATE;
     }

Modified: 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Submit.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Submit.java?rev=678079&r1=678078&r2=678079&view=diff
==============================================================================
--- 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Submit.java
 (original)
+++ 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Submit.java
 Fri Jul 18 17:08:47 2008
@@ -52,15 +52,20 @@
     description="Render a submit button",
     allowDynamicAttributes=true)
 public class Submit extends FormButton {
-    
+
     private static final Logger LOG = LoggerFactory.getLogger(Submit.class);
-    final public static String TEMPLATE = "submit";
+    final public static String OPEN_TEMPLATE = "submit";
+    final public static String TEMPLATE = "submit-close";
     protected String src;
 
     public Submit(ValueStack stack, HttpServletRequest request, 
HttpServletResponse response) {
         super(stack, request, response);
     }
 
+    public String getDefaultOpenTemplate() {
+        return OPEN_TEMPLATE;
+    }
+
     protected String getDefaultTemplate() {
         return TEMPLATE;
     }
@@ -76,10 +81,10 @@
 
         super.evaluateParams();
     }
-    
+
     public void evaluateExtraParams() {
         super.evaluateExtraParams();
-        
+
         if (src != null)
             addParameter("src", findString(src));
     }
@@ -92,12 +97,18 @@
     protected boolean supportsImageType() {
         return true;
     }
-    
+
     @StrutsTagAttribute(description="Supply an image src for <i>image</i> type 
submit button. Will have no effect for types <i>input</i> and <i>button</i>.")
     public void setSrc(String src) {
         this.src = src;
     }
-    
+
+
+    @Override
+    public boolean usesBody() {
+        return true;
+    }
+
     /**
      * Overrides to be able to render body in a template rather than always 
before the template
      */
@@ -105,7 +116,7 @@
         evaluateParams();
         try {
             addParameter("body", body);
-            
+
             mergeTemplate(writer, buildTemplateName(template, 
getDefaultTemplate()));
         } catch (Exception e) {
             LOG.error("error when rendering", e);

Added: 
struts/struts2/trunk/core/src/main/resources/template/css_xhtml/submit-close.ftl
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/resources/template/css_xhtml/submit-close.ftl?rev=678079&view=auto
==============================================================================
--- 
struts/struts2/trunk/core/src/main/resources/template/css_xhtml/submit-close.ftl
 (added)
+++ 
struts/struts2/trunk/core/src/main/resources/template/css_xhtml/submit-close.ftl
 Fri Jul 18 17:08:47 2008
@@ -0,0 +1,6 @@
+<#include "/${parameters.templateDir}/simple/submit-close.ftl" />
+<#if parameters.labelposition?default("top") == 'top'>
+</div> <#t/>
+<#else>
+</span> <#t/>
+</#if>

Modified: 
struts/struts2/trunk/core/src/main/resources/template/css_xhtml/submit.ftl
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/resources/template/css_xhtml/submit.ftl?rev=678079&r1=678078&r2=678079&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/resources/template/css_xhtml/submit.ftl 
(original)
+++ struts/struts2/trunk/core/src/main/resources/template/css_xhtml/submit.ftl 
Fri Jul 18 17:08:47 2008
@@ -33,8 +33,3 @@
 </#if>
 ><#t/>
 <#include "/${parameters.templateDir}/simple/submit.ftl" />
-<#if parameters.labelposition?default("top") == 'top'>
-</div> <#t/>
-<#else>
-</span> <#t/>
-</#if>

Added: 
struts/struts2/trunk/core/src/main/resources/template/simple/submit-close.ftl
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/resources/template/simple/submit-close.ftl?rev=678079&view=auto
==============================================================================
--- 
struts/struts2/trunk/core/src/main/resources/template/simple/submit-close.ftl 
(added)
+++ 
struts/struts2/trunk/core/src/main/resources/template/simple/submit-close.ftl 
Fri Jul 18 17:08:47 2008
@@ -0,0 +1,4 @@
+<#if parameters.type?exists && parameters.type=="button">
+<#if (parameters.body)?default("")?length gt 0><@s.property 
value="parameters.body"/><#elseif parameters.label?exists><@s.property 
value="parameters.label"/><#rt/></#if>
+</button>
+</#if>

Modified: 
struts/struts2/trunk/core/src/main/resources/template/simple/submit.ftl
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/resources/template/simple/submit.ftl?rev=678079&r1=678078&r2=678079&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/resources/template/simple/submit.ftl 
(original)
+++ struts/struts2/trunk/core/src/main/resources/template/simple/submit.ftl Fri 
Jul 18 17:08:47 2008
@@ -49,7 +49,7 @@
 <#include "/${parameters.templateDir}/simple/scripting-events.ftl"/>
 <#include "/${parameters.templateDir}/simple/common-attributes.ftl" />
 <#include "/${parameters.templateDir}/simple/dynamic-attributes.ftl" />
-><#if parameters.body?length gt 0><@s.property 
value="parameters.body"/><#elseif parameters.label?exists><@s.property 
value="parameters.label"/><#rt/></#if></button>
+>
 <#else>
 <#if parameters.type?exists && parameters.type=="image">
 <@s.property value="parameters.body"/>

Added: 
struts/struts2/trunk/core/src/main/resources/template/xhtml/submit-close.ftl
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/resources/template/xhtml/submit-close.ftl?rev=678079&view=auto
==============================================================================
--- 
struts/struts2/trunk/core/src/main/resources/template/xhtml/submit-close.ftl 
(added)
+++ 
struts/struts2/trunk/core/src/main/resources/template/xhtml/submit-close.ftl 
Fri Jul 18 17:08:47 2008
@@ -0,0 +1,3 @@
+<#include "/${parameters.templateDir}/simple/submit-close.ftl" />
+</div><#t/>
+<#include "/${parameters.templateDir}/xhtml/controlfooter.ftl" />

Modified: struts/struts2/trunk/core/src/main/resources/template/xhtml/submit.ftl
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/resources/template/xhtml/submit.ftl?rev=678079&r1=678078&r2=678079&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/resources/template/xhtml/submit.ftl 
(original)
+++ struts/struts2/trunk/core/src/main/resources/template/xhtml/submit.ftl Fri 
Jul 18 17:08:47 2008
@@ -27,5 +27,3 @@
 </#if>
 ><#t/>
 <#include "/${parameters.templateDir}/simple/submit.ftl" />
-</div><#t/>
-<#include "/${parameters.templateDir}/xhtml/controlfooter.ftl" />

Modified: struts/struts2/trunk/core/src/site/resources/tags/reset.html
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/site/resources/tags/reset.html?rev=678079&r1=678078&r2=678079&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/site/resources/tags/reset.html (original)
+++ struts/struts2/trunk/core/src/site/resources/tags/reset.html Fri Jul 18 
17:08:47 2008
@@ -268,6 +268,14 @@
                                        <td align="left" valign="top">Set the 
html onselect attribute on rendered html element</td>
                                </tr>
                                <tr>
+                                       <td align="left" 
valign="top">openTemplate</td>
+                                       <td align="left" valign="top">false</td>
+                                       <td align="left" valign="top"></td>
+                                       <td align="left" valign="top">false</td>
+                                       <td align="left" 
valign="top">String</td>
+                                       <td align="left" valign="top">Set 
template to use for opening the rendered html.</td>
+                               </tr>
+                               <tr>
                                        <td align="left" 
valign="top">required</td>
                                        <td align="left" valign="top">false</td>
                                        <td align="left" valign="top">false</td>

Modified: struts/struts2/trunk/core/src/site/resources/tags/submit.html
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/site/resources/tags/submit.html?rev=678079&r1=678078&r2=678079&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/site/resources/tags/submit.html (original)
+++ struts/struts2/trunk/core/src/site/resources/tags/submit.html Fri Jul 18 
17:08:47 2008
@@ -268,6 +268,14 @@
                                        <td align="left" valign="top">Set the 
html onselect attribute on rendered html element</td>
                                </tr>
                                <tr>
+                                       <td align="left" 
valign="top">openTemplate</td>
+                                       <td align="left" valign="top">false</td>
+                                       <td align="left" valign="top"></td>
+                                       <td align="left" valign="top">false</td>
+                                       <td align="left" 
valign="top">String</td>
+                                       <td align="left" valign="top">Set 
template to use for opening the rendered html.</td>
+                               </tr>
+                               <tr>
                                        <td align="left" 
valign="top">required</td>
                                        <td align="left" valign="top">false</td>
                                        <td align="left" valign="top">false</td>

Modified: 
struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/ui/SubmitTest.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/ui/SubmitTest.java?rev=678079&r1=678078&r2=678079&view=diff
==============================================================================
--- 
struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/ui/SubmitTest.java
 (original)
+++ 
struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/ui/SubmitTest.java
 Fri Jul 18 17:08:47 2008
@@ -34,60 +34,63 @@
  */
 public class SubmitTest extends AbstractUITagTest {
 
-    public void testDefaultValues() throws Exception {
+    public void testButtonSimpleWithBody() throws Exception {
         TestAction testAction = (TestAction) action;
         testAction.setFoo("bar");
 
         SubmitTag tag = new SubmitTag();
+        tag.setTheme("simple");
         tag.setPageContext(pageContext);
-        tag.setLabel("mylabel");
+        tag.setType("button");
         tag.setName("myname");
-        tag.setTitle("mytitle");
+        tag.setLabel("yoyoyoyoy");
+        tag.setValue("%{foo}");
 
+        StrutsBodyContent body = new StrutsBodyContent(null);
+        body.print("foo");
+        tag.setBodyContent(body);
         tag.doStartTag();
         tag.doEndTag();
 
-        verify(TextFieldTag.class.getResource("Submit-2.txt"));
+        verify(TextFieldTag.class.getResource("Submit-10.txt"));
     }
 
-    public void testSimple() throws Exception {
+    public void testDefaultValues() throws Exception {
         TestAction testAction = (TestAction) action;
         testAction.setFoo("bar");
 
         SubmitTag tag = new SubmitTag();
         tag.setPageContext(pageContext);
         tag.setLabel("mylabel");
-        tag.setAlign("left");
         tag.setName("myname");
-        tag.setValue("%{foo}");
-        tag.setDisabled("true");
-        tag.setTabindex("1");
-        
+        tag.setTitle("mytitle");
+
         tag.doStartTag();
         tag.doEndTag();
 
-        verify(TextFieldTag.class.getResource("Submit-1.txt"));
+        verify(TextFieldTag.class.getResource("Submit-2.txt"));
     }
 
-    public void testButtonSimple() throws Exception {
+    public void testSimple() throws Exception {
         TestAction testAction = (TestAction) action;
         testAction.setFoo("bar");
 
         SubmitTag tag = new SubmitTag();
         tag.setPageContext(pageContext);
-        tag.setType("button");
+        tag.setLabel("mylabel");
+        tag.setAlign("left");
         tag.setName("myname");
         tag.setValue("%{foo}");
         tag.setDisabled("true");
         tag.setTabindex("1");
-        
+
         tag.doStartTag();
         tag.doEndTag();
 
-        verify(TextFieldTag.class.getResource("Submit-3.txt"));
+        verify(TextFieldTag.class.getResource("Submit-1.txt"));
     }
 
-    public void testButtonSimpleWithBody() throws Exception {
+    public void testButtonSimple() throws Exception {
         TestAction testAction = (TestAction) action;
         testAction.setFoo("bar");
 
@@ -96,14 +99,13 @@
         tag.setType("button");
         tag.setName("myname");
         tag.setValue("%{foo}");
+        tag.setDisabled("true");
+        tag.setTabindex("1");
 
         tag.doStartTag();
-        StrutsBodyContent body = new StrutsBodyContent(null);
-        body.append("foo");
-        tag.setBodyContent(body);
         tag.doEndTag();
 
-        verify(TextFieldTag.class.getResource("Submit-7.txt"));
+        verify(TextFieldTag.class.getResource("Submit-3.txt"));
     }
 
     public void testButtonWithLabel() throws Exception {
@@ -176,7 +178,7 @@
         tag.doStartTag();
         tag.doEndTag();
 
-        assertEquals("<button type=\"submit\" id=\"myname\" 
name=\"action:manager!update\" value=\"Submit\">mylabel</button>", 
writer.toString().trim());
+        verify(TextFieldTag.class.getResource("Submit-7.txt"));
     }
 
     public void testSimpleThemeImageUsingActionOnly() throws Exception {
@@ -196,7 +198,7 @@
         tag.doStartTag();
         tag.doEndTag();
 
-        assertEquals("<button type=\"submit\" id=\"myname\" 
name=\"action:manager\" value=\"Submit\">mylabel</button>", 
writer.toString().trim());
+        verify(TextFieldTag.class.getResource("Submit-8.txt"));
     }
 
     public void testSimpleThemeImageUsingMethodOnly() throws Exception {
@@ -216,7 +218,7 @@
         tag.doStartTag();
         tag.doEndTag();
 
-        assertEquals("<button type=\"submit\" id=\"myname\" 
name=\"method:update\" value=\"Submit\">mylabel</button>", 
writer.toString().trim());
+        verify(TextFieldTag.class.getResource("Submit-9.txt"));
     }
 
     public void testSimpleThemeInput() throws Exception {

Added: 
struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/Submit-10.txt
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/Submit-10.txt?rev=678079&view=auto
==============================================================================
--- 
struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/Submit-10.txt
 (added)
+++ 
struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/Submit-10.txt
 Fri Jul 18 17:08:47 2008
@@ -0,0 +1 @@
+<button type="submit" id="myname" name="myname" value="bar">foo</button>
\ No newline at end of file

Modified: 
struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/Submit-7.txt
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/Submit-7.txt?rev=678079&r1=678078&r2=678079&view=diff
==============================================================================
--- 
struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/Submit-7.txt
 (original)
+++ 
struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/Submit-7.txt
 Fri Jul 18 17:08:47 2008
@@ -1,3 +1,2 @@
-<tr>
-    <td colspan="2"><div align="right"><button type="submit" id="myname" 
name="myname" value="bar">foo</button></div></td>
-</tr>
+<button type="submit" id="myname" name="action:manager!update" 
value="Submit">mylabel
+</button>

Added: 
struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/Submit-8.txt
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/Submit-8.txt?rev=678079&view=auto
==============================================================================
--- 
struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/Submit-8.txt
 (added)
+++ 
struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/Submit-8.txt
 Fri Jul 18 17:08:47 2008
@@ -0,0 +1,2 @@
+<button type="submit" id="myname" name="action:manager" value="Submit">mylabel
+</button>
\ No newline at end of file

Added: 
struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/Submit-9.txt
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/Submit-9.txt?rev=678079&view=auto
==============================================================================
--- 
struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/Submit-9.txt
 (added)
+++ 
struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/Submit-9.txt
 Fri Jul 18 17:08:47 2008
@@ -0,0 +1,2 @@
+<button type="submit" id="myname" name="method:update" value="Submit">mylabel
+</button>
\ No newline at end of file


Reply via email to