Merge pull request #423 from apache/WW-5081-cols-rows

[WW-5081] Makes textarea compatible with W3C
diff --git a/core/src/main/resources/template/simple/textarea.ftl b/core/src/main/resources/template/simple/textarea.ftl
index 54e935c..22f2d9b 100644
--- a/core/src/main/resources/template/simple/textarea.ftl
+++ b/core/src/main/resources/template/simple/textarea.ftl
@@ -20,8 +20,12 @@
 -->
 <textarea<#rt/>
  name="${(parameters.name!"")}"<#rt/>
+<#if parameters.cols?has_content>
  cols="${(parameters.cols!"")}"<#rt/>
+</#if>
+<#if parameters.rows?has_content>
  rows="${(parameters.rows!"")}"<#rt/>
+</#if>
 <#if parameters.wrap?has_content>
  wrap="${parameters.wrap}"<#rt/>
 </#if>
diff --git a/core/src/test/java/org/apache/struts2/views/jsp/ui/TextareaTest.java b/core/src/test/java/org/apache/struts2/views/jsp/ui/TextareaTest.java
index 3dc7630..ddd0506 100644
--- a/core/src/test/java/org/apache/struts2/views/jsp/ui/TextareaTest.java
+++ b/core/src/test/java/org/apache/struts2/views/jsp/ui/TextareaTest.java
@@ -54,6 +54,30 @@
         verify(TextareaTag.class.getResource("Textarea-1.txt"));
     }
 
+    public void testNoColsAndRows() throws Exception {
+        TestAction testAction = (TestAction) action;
+        testAction.setFoo("bar");
+
+        TextareaTag tag = new TextareaTag();
+        tag.setPageContext(pageContext);
+        tag.setLabel("mylabel");
+        tag.setName("myname");
+        tag.setValue("%{foo}");
+        tag.setTitle("mytitle");
+        tag.setDisabled("true");
+        tag.setTabindex("5");
+        tag.setOnchange("alert('goodbye');");
+        tag.setOnclick("alert('onclick');");
+        tag.setId("the_id");
+        tag.setOnkeyup("alert('hello');");
+        tag.setReadonly("true");
+
+        tag.doStartTag();
+        tag.doEndTag();
+
+        verify(TextareaTag.class.getResource("Textarea-2.txt"));
+    }
+
     /**
      * Initialize a map of {@link org.apache.struts2.views.jsp.AbstractUITagTest.PropertyHolder} for generic tag
      * property testing. Will be used when calling {@link #verifyGenericProperties(org.apache.struts2.views.jsp.ui.AbstractUITag,
diff --git a/core/src/test/resources/org/apache/struts2/views/jsp/ui/Textarea-2.txt b/core/src/test/resources/org/apache/struts2/views/jsp/ui/Textarea-2.txt
new file mode 100644
index 0000000..69c05c0
--- /dev/null
+++ b/core/src/test/resources/org/apache/struts2/views/jsp/ui/Textarea-2.txt
@@ -0,0 +1,4 @@
+<tr>
+    <td class="tdLabel"><label for="the_id" class="label">mylabel:</label></td>
+    <td class="tdInput"><textarea name="myname" disabled="disabled" readonly="readonly" tabindex="5" id="the_id" title="mytitle" onclick="alert('onclick');" onkeyup="alert('hello');" onchange="alert('goodbye');">bar</textarea></td>
+</tr>