diff --git a/core/src/main/java/org/apache/struts2/components/TextArea.java b/core/src/main/java/org/apache/struts2/components/TextArea.java
index 6e280fc..0d03991 100644
--- a/core/src/main/java/org/apache/struts2/components/TextArea.java
+++ b/core/src/main/java/org/apache/struts2/components/TextArea.java
@@ -51,6 +51,8 @@
     protected String readonly;
     protected String rows;
     protected String wrap;
+    protected String maxlength;
+    protected String minlength;
 
     public TextArea(ValueStack stack, HttpServletRequest request, HttpServletResponse response) {
         super(stack, request, response);
@@ -78,6 +80,13 @@
         if (wrap != null) {
             addParameter("wrap", findString(wrap));
         }
+
+        if (maxlength != null) {
+            addParameter("maxlength", findString(maxlength));
+        }
+        if (minlength != null) {
+            addParameter("minlength", findString(minlength));
+        }
     }
 
     @StrutsTagAttribute(description="HTML cols attribute", type="Integer")
@@ -99,4 +108,14 @@
     public void setWrap(String wrap) {
         this.wrap = wrap;
     }
+
+    @StrutsTagAttribute(description="HTML maxlength attribute", type="Integer")
+    public void setMaxlength(String maxlength) {
+        this.maxlength = maxlength;
+    }
+
+    @StrutsTagAttribute(description="HTML minlength attribute", type="Integer")
+    public void setMinlength(String minlength) {
+        this.minlength = minlength;
+    }
 }
diff --git a/core/src/main/java/org/apache/struts2/views/jsp/ui/TextareaTag.java b/core/src/main/java/org/apache/struts2/views/jsp/ui/TextareaTag.java
index 1f77f1d..0efbe01 100644
--- a/core/src/main/java/org/apache/struts2/views/jsp/ui/TextareaTag.java
+++ b/core/src/main/java/org/apache/struts2/views/jsp/ui/TextareaTag.java
@@ -37,6 +37,8 @@
     protected String readonly;
     protected String rows;
     protected String wrap;
+    protected String maxlength;
+    protected String minlength;
 
     public Component getBean(ValueStack stack, HttpServletRequest req, HttpServletResponse res) {
         return new TextArea(stack, req, res);
@@ -50,6 +52,8 @@
         textArea.setReadonly(readonly);
         textArea.setRows(rows);
         textArea.setWrap(wrap);
+        textArea.setMaxlength(maxlength);
+        textArea.setMinlength(minlength);
     }
 
     public void setCols(String cols) {
@@ -67,5 +71,13 @@
     public void setWrap(String wrap) {
         this.wrap = wrap;
     }
+    
+    public void setMaxlength(String maxlength) {
+        this.maxlength = maxlength;
+    }
+
+    public void setMinlength(String minlength) {
+        this.minlength = minlength;
+    }
 
 }
diff --git a/core/src/main/resources/template/simple/textarea.ftl b/core/src/main/resources/template/simple/textarea.ftl
index 22f2d9b..f08826f 100644
--- a/core/src/main/resources/template/simple/textarea.ftl
+++ b/core/src/main/resources/template/simple/textarea.ftl
@@ -52,4 +52,10 @@
 <#if parameters.nameValue??>
 <@s.property value="parameters.nameValue"/><#t/>
 </#if>
+<#if parameters.maxlength?has_content>
+ maxlength="${parameters.maxlength}"<#rt/>
+</#if>
+<#if parameters.minlength?has_content>
+ minlength="${parameters.minlength}"<#rt/>
+</#if>
 </textarea>
\ No newline at end of file
diff --git a/core/src/site/resources/tags/textarea-attributes.html b/core/src/site/resources/tags/textarea-attributes.html
index fbdf054..8a35ed8 100644
--- a/core/src/site/resources/tags/textarea-attributes.html
+++ b/core/src/site/resources/tags/textarea-attributes.html
@@ -134,6 +134,14 @@
             <td align="left" valign="top">Define label position of form element (top/left)</td>
         </tr>
         <tr>
+            <td align="left" valign="top">maxlength</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">Integer</td>
+            <td align="left" valign="top">HTML maxlength attribute</td>
+        </tr>
+        <tr>
             <td align="left" valign="top">name</td>
             <td align="left" valign="top">false</td>
             <td align="left" valign="top"></td>
